菜鸡求教,全部RE
查看原帖
菜鸡求教,全部RE
54372
A_Đark_Horcrux楼主2020/10/5 19:53

QAQ

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=11000010;
int l=1,t,r,mid,maxx=-1,palin[N]; char c,a[N];
int main()
{
	a[0]='',a[1]='|'; c=getchar(); 
    while(c<'a'||c>'z') c=getchar();
    while(c>='a'&&c<='z') a[++l]=c,a[++l]='|',c=getchar();
    for(t=1;t<=l;t++)
	{
	    if(t<=r) palin[t]=min(palin[(mid<<1)-t],r-t+1);
	    while(a[t-palin[t]]==a[t+palin[t]]) palin[t]++;
	    if(palin[t]+t>r) r=palin[t]+t-1,mid=t;
	    maxx=max(maxx,palin[t]);
    }
    printf("%d",maxx-1);
	return 0;
}

2020/10/5 19:53
加载中...