字符串游戏
给定 个仅由小写英文字母 a 到 z 组成的字符串 ,每个字符串都有一个权值 。接下来进行 次操作,操作分为以下三种:
Cv x v':将第 个字符串的权值修改为 ;Cs x a':将第 个字符串修改为 ;Q:从当前字符串中选择一个集合,并将集合中的字符串重新排列,使得除最后一个字符串外,每个字符串都是后一个字符串的前缀。两个相同的字符串也满足前缀关系,也可以不选择任何字符串。求所有合法集合中的最大权值和。
前 的测试数据可以使用离线算法,后 的测试数据要求使用在线算法。
输入格式
第一行包含一个正整数 ,表示当前的数据类型。
第二行包含两个正整数 ,分别表示字符串数量和操作数量。
接下来 行,每行包含一个字符串 。
第 行包含 个整数 ,依次表示每个字符串的初始权值。
接下来 行,每行表示一次操作,格式为 Cv x v'、Cs x a' 或 Q。
当 时,修改操作中的参数无需解码,直接按输入内容执行。
当 时,设最近一次询问操作的答案为 ;如果此前还没有询问操作,则令 。修改操作的参数需要按以下规则解码:
- 对于
Cv x v'操作,将 解码为 ; - 对于
Cs x a'操作,将字符串 中的每个字符循环后移 位,其中字母a到z首尾循环。
输出格式
对于每次 Q 操作,输出一行一个整数,表示当前合法字符串集合的最大权值和。
样例输入
1
5 5
aba
ab
babb
abaa
abab
-2 1 4 2 3
Q
Cv 1 2
Q
Cs 3 abaab
Q
样例输出
4
6
9
数据范围
- ;
- ;
- ;
- 所有修改操作均满足 ;
- 初始权值 以及输入中
Cv操作解码前的参数 均满足 ; - 令 表示所有初始字符串及所有
Cs操作中输入字符串的长度总和,则 ; - 前 的测试数据允许使用离线算法,后 的测试数据要求使用在线算法。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
1
5 5
aba
ab
babb
abaa
abab
-2 1 4 2 3
Q
Cv 1 2
Q
Cs 3 abaab
Q
输出
4
6
9