一个简单的想法是建出 PAM,枚举长度为 4 的倍数的状态,在 Fail 树上倍增求出其不超过长度一半的最长回文后缀长度,判断其是否恰等于其长度一半。
这样是 O(nlogn) 的,不够优美(雾
实际上这个不超过长度一半的最长回文后缀,可以用类似求 Fail 的方法,对于每个状态记录一个指针指向不超过其长度一半的最长回文后缀。
这样就 O(n) 了。
代码:
1 |
|
一个简单的想法是建出 PAM,枚举长度为 4 的倍数的状态,在 Fail 树上倍增求出其不超过长度一半的最长回文后缀长度,判断其是否恰等于其长度一半。
这样是 O(nlogn) 的,不够优美(雾
实际上这个不超过长度一半的最长回文后缀,可以用类似求 Fail 的方法,对于每个状态记录一个指针指向不超过其长度一半的最长回文后缀。
这样就 O(n) 了。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment