Cry for the Moon (Hard Ver.)
520 MS 64 MB | Markdown 显示标签
进阶 (*1900) 贪心 排序 模拟 STL 数据结构 字符串 并查集 堆
10 | 69 |
通过 | 提交 |
题目描述
*Easy 与 Hard 的唯一区别在于数值范围。*
> 我一直在你身旁看着你的点点滴滴\
> 就像是住在大海的近旁就能够逐渐了解大海一样\
> 关于你的事情,我也渐渐地了解了很多\
> 何时动怒何时微笑\
> 又或是泫然欲泣的瞬间\
> 我都可以感受得到\
> 你的心 现在在我身上
>
> 🎵[《Cry for the Moon》 - 出羽良彰 (でわ よしあき)](https://y.qq.com/n/ryqq/songDetail/5451276)
<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=28445796&auto=0&height=66"></iframe>
![1666931030736.jpg](/userfiles/images/e33b0b80-f602-4c19-ac0d-dbcb1036a9b6.jpg)
---
又是风平浪静的一天。光与爱花打算玩个小游戏。
海浪送来了一个仅由 $A$ 和 $B$ 组成的字符串。光与爱花每次可以选择一段**字符相同的连续子串**取走。两人交替着取,并且爱花先开始。在子字符串被取走后,剩余的字符串会按原顺序拼接起来。
例如,对于字符串 $ABBAB$,在一次操作中存在以下六种不同的取法:
- $\textbf{A}BBAB\rightarrow BBAB$
- $A\textbf{B}BAB\rightarrow ABAB$
- $AB\textbf{B}AB\rightarrow ABAB$
- $A\textbf{BB}AB\rightarrow AAB$
- $ABB\textbf{A}B\rightarrow ABBB$
- $ABBA\textbf{B}\rightarrow ABBA$
已知单个字符 $A$ 的权值为 $a$,单个字符 $B$ 的权值为 $b$,连续取走多个字符时,所能得到的权值即**对应字符权值**与**取走数量**的乘积。
两人在取子字符串时,**只会保证自己**在**当回合内**能得到的权值尽可能大。如果存在多种取法都能得到最大的权值,则会取**起始下标更靠前**的子字符串。
你能算出在游戏结束后,光与爱花各自能得到的总权值是多少吗?
输入格式
输入第一行包含三个正整数 $n,a,b\ (1\le n\le 2\cdot 10^5,\ 1\le a,b\le 10^4)$,分别表示字符串的长度、字符 $A$ 的权值以及字符 $B$ 的权值。
第二行包含一个长度为 $n$ 的字符串,仅由字符 $A$ 和 $B$ 组成。
输出格式
输出两个正整数,分别表示光与爱花各自能得到的总权值,以空格隔开。
样例输入 #1
11 1 3 AAAAABAAAAA
样例输出 #1
5 8
样例输入 #2
12 1 3 AAAAABBAAAAA
样例输出 #2
10 6
提示
在第一个样例中:
- 爱花先手,取走 $[1,5]$ 这五个字符 $A$,获得权值 $1\cdot 5=5$,字符串剩余 $BAAAAA$;
- 光取走 $[2,6]$ 这五个字符 $A$,获得权值 $1\cdot 5=5$,字符串剩余 $B$;
- 爱花取走 $B$,获得权值 $3\cdot 1=3$,无剩余字符,游戏结束。
光获得的权值和为 $5$,爱花获得的权值和为 $8$。
在第二个样例中:
- 爱花先手,由于取走 $BB$ 比其余方案更优,因此取走 $[6,7]$ 这两个字符 $B$,获得权值 $2\cdot 3=6$,字符串剩余 $AAAAAAAAAA$;
- 光取走剩余所有字符 $A$,获得权值 $10\cdot 1=10$,无剩余字符,游戏结束。
光获得的权值和为 $10$,爱花获得的权值和为 $6$。