Link
Solution
先
的枚举策略是从一个#开始向两边扩展,在扩展过程中如果两个指针位置的回文串都足够长,就更新答案,直到的距离超过了以为中心的回文半径。足够长,指
做了什么无用功呢?如果从左往右找,只要找到第一个的点,那就一定找到了以为中心的最长双倍回文,因为右指针的回文串与左指针的在距离不超过的回文半径的时候指向的字符串是对称的。
那么现在要解决的就是如何快速找到最靠左的使得
然后这个是有单调性的:
所以就可以考虑用一个维护单调递增的数据结构来优化
应该可以用单调队列?似乎不能,因为并不单调
但是orz Stilwell
很神奇地用了并查集
复杂度?
Code
1 |
|