@xzyxzy
2018-07-02T10:18:52.000000Z
字数 933
阅读 1730
字符串
极易理解,挂一个dalao的博客
贴个代码吧。
//luogu P3805【模板】manacher算法#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int l,C,R,p[31000000],Ans;char s[31000000];int main(){s[++l]='#';char ch=getchar();while(ch>'z'||ch<'a') ch=getchar();while(ch>='a'&&ch<='z'){s[++l]=ch;s[++l]='#';ch=getchar();}for(int i=1;i<=l;i++){p[i]=i<R?min(p[C*2-i],R-i):1;while(s[i+p[i]]==s[i-p[i]]&&i-p[i]>=1&&i+p[i]<=l) p[i]++;if(i+p[i]>R) {R=i+p[i];C=i;}Ans=max(Ans,p[i]-1);}printf("%d\n",Ans); return 0;}
挂个题单