(noi.ac题面被改过了,题意是一样的)
题意简述
给你一个字符串$S$,长度$1e6$。
$S$的一个$k$个串的划分$a_1,a_2…a_k$,满足:对于任意的$i$,$a_i=a_{k-i+1}$,这就是$S$的一个“回文划分”,它被分成了$k$块。
请你求$S$中被分成的块数最多的一个回文划分,输出这个最多的块数。
比如样例中的“bonobo”这个串,最大的划分就是“bo/no/bo”,3块。
思路框架
从两边往中间,每次找最短的串,使得它在前面和后面同时出现(哈希判断)。
到最后,如果$n$为奇数,或者中间一块不能再分了,就把答案$+1$(中间一块单独划分出来)。
代码
1 |
|