TLE求掉
查看原帖
TLE求掉
547238
篮网总冠军楼主2025/7/24 20:37
#include <bits/stdc++.h>
using namespace std;

char a[22000005];
int p[22000005];
int main(){
    ios::sync_with_stdio(false);
	cin>>(a+1);
	int n=strlen(a+1);
	a[0]='#';
	for(int i=n;i>=1;i--){
		a[i*2]='#';
		a[i*2-1]=a[i];
	}
	n=n*2;
	int l=0,r=-1,ans=0;
	for(int i=1;i<=n;i++){
		if (i<r) p[i]=min(r-i,p[l+r-i]);
		while(i-p[i]-1>=0&&i+p[i]+1<=n&&a[i-p[i]-1]==a[i+p[i]+1]) p[i]++;
        if(i>r) r=i+p[i],l=i-p[i];
		ans=max(ans,p[i]);
	}
	cout<<ans<<endl;
	return 0;
}
2025/7/24 20:37
加载中...