YBT金牌导航Manacher不交回文串
#include<iostream>
#include<cstdio>
using namespace std;
char str[],s[];
long long pre[],suf[],sum[],p[],len;
void init()
{
str[0]='@';
for(i=1;i<=(len<<1);++i)
{
}
str[len+1]='%';
return;
}
void Manacher()
{
long long mx,p,i;
inti();
for(i=1;i<=len;++i)
{
r[i]=(mx>i)?min(mx-i,r[(p<<1)-i]):1;
for(;str[i-r[i]]==str[i+r[i]];++r[i]);
if(i+r[i]>mx)p=i,mx=i+r[i];
}
return;
}
int main()
{
long long i;
while(~scanf("%s",str+1))
{
for(len=1;str[len];++len);
for(--len,i=0;i<=len;++i)pre[i]=suf[i]=sum[i]=0;
Manacher();
for()
}
return 0;
}