字符合并
题目描述
Y 同学手中有一个长度为 的 序列。他可以通过一种特定的“合并”操作来获取分数。
每次操作,Y 同学可以选择序列中相邻的 个字符,将它们合并成一个新的字符( 或 )。这次合并不仅会生成一个新字符,还会带来一定的分数奖励。生成的新字符和所获得的分数完全取决于这 个相邻字符组成的状态。
具体来说,这 个相邻字符可以看作一个长度为 的二进制数。根据这个二进制数的值(从 到 ),题目给定了 种合并方案的规则,每种规则规定了该状态合并后生成的新字符 以及获得的分数 。
Y 同学可以不断进行合并操作,每次合并后,序列的长度会减少 。他的目标是求出在最优的操作顺序下,他最终能够获得的最大总分数。
输入格式
第一行包含两个整数 和 ,分别表示初始 序列的长度和每次合并的字符数量。
第二行包含 个用空格隔开的字符,每个字符为 或 ,表示初始的 序列。
接下来 行,每行包含一个字符 和一个整数 。这 行依次对应长度为 的 串所表示的二进制数值从 到 的合并规则。即,第 行(从这部分开始算,也就是整个输入的第 行,对应二进制数 )的 表示该状态合并后的新字符, 表示该次合并获得的分数。
输出格式
输出一行一个整数,表示能够获得的最大分数。
样例
样例输入 #1
3 2
1 0 1
1 10
1 10
0 20
1 30
样例输出 #1
40
数据范围与约定
对于 的数据,保证:
| 子任务编号 | 分值 | 特殊性质 | |
|---|---|---|---|
| 1 | 30 | 无 | |
| 2 | |||
| 3 | 40 |
京公网安备11010802045784号