二分 + $Hash$ .
- 先补充上多余字符,将回文串全部弄成奇回文串.然后二分 + $Hash$ 预处理出每个位置的最大回文半径.
- 对于第三种情况,可以枚举回文中心,显然往两边拓展时,过了最大回文半径时就换到另一个串是最优的.于是可以二分在另一个串中的长度, $Hash$ 判断合法性.拼接位置的处理比较麻烦,可以调用补字符前的原串 $Hash$ 值.
- 时间复杂度 $O(nlogn)$ .
1 |
|
夢はここに 思い出は遠くに
二分 + $Hash$ .
1 | #include<bits/stdc++.h> |