全T。。。难道manacher不是线性复杂度吗/yiw
求助QAQ
#include<cstring>
#include<cstdio>
const int M=1.1e7+5;
char n,m,a[M],s[M<<1];
int p[M<<1];
inline int min(const int a,const int b){
return a>b?b:a;
}
inline void I_AK_IOI(){
for(int i=1;i<n;++i)s[++m]=a[i],s[++m]='#';
s[++m]=a[n];
}
inline int manacher(char*s,int len){
int i,mr=0,mid;
for(i=1;i<len;++i){
if(i<mr)p[i]=min(p[(mid<<1)-i],p[mid]+mid-i);
else p[i]=1;
while(s[i-p[i]]==s[i+p[i]]&&p[i]<=i)++p[i];
if(i+p[i]>mr)mr=i+p[i],mid=i;
}
}
signed main(){
int i,ans=0;
scanf("%s",a+1);
n=strlen(a+1);
I_AK_IOI();
manacher(s,m);
for(i=1;i<m;++i)if(ans<p[i])ans=p[i];
printf("%d",ans-1);
}