Manacher
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 3974 Manacher算法(模板)
Manacher模板题//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 2005000 int l,mx,p[N],id,ans,cases; char a[N],b[N]; int main(){ while(scanf("%s",a原创 2016-11-02 08:45:10 · 535 阅读 · 0 评论 -
BZOJ 2342 Manacher
思路: 首先用manacher可以求出以i和i+1中间为对称轴,最长回文串能扩增的长度p[i]。然后4*(y-x)能更新答案,当且仅当y≤x+p[x]/2且y-p[y]≤x。按i-p[i]将所有点排序,依次插入set中,查询x+p[x]/2的前驱更新答案,时间复杂度O(n*logn)。——AaronPolaris//By SiriusRen #include <set> #include <cst原创 2016-12-28 15:28:14 · 388 阅读 · 0 评论 -
BZOJ 3160 FFT+Manacher
思路: 这道题思路好奇怪…….我们先要知道关于x (x可以是间隙) 对称的有几对字母 显然暴力是n^2的 那怎么办呢先把所有’a’看成1 ‘b’看成0意外的发现 这不就是卷积嘛再倒过来搞一搞 加一下2^x-1就是包含连续的回文串的解了然后 跑个manacher 把包含的删掉就好啦时间复杂度是O(nlogn)的代码://By SiriusRen #include <cstdio> #inc原创 2017-01-26 14:47:27 · 627 阅读 · 0 评论