Problem
【HAOI2016】字符合并
Description
有一个长度为 的 串,你可以每次将相邻的 个字符合并,得到一个新的字符并获得一定分数。得到的新字符和分数由这 个字符确定。你需要求出你能获得的最大分数。
Input
第一行两个整数,。接下来一行长度为的串,表示初始串。接下来行,每行一个字符和一个整数,表示长度为的串连成二进制后按从小到大顺序得到的第种合并方案得到的新字符,表示对应的第种方案对应获得的分数。, , ,
Output
Sample Input
1 | 3 2 |
Sample Output
1 | 40 |
标签:状压DP
Solution
这显然是一道状压()
考虑用表示将字符序列表示为状态的最大分数。
初始状态为 ()
转移则将斩成两半和,,。
特别需要注意的是,当时(为题目中的),会刚好变为一个字符,因此不能像上面那样递推,应为(且可为),(且可为)。
Code
1 |
|