22pts求掉
查看原帖
22pts求掉
547238
篮网总冠军楼主2025/7/23 23:48
#include <bits/stdc++.h>
using namespace std;

int p[20000005];
char a[20000005];
int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	cin>>(a+1);
	int n=strlen(a+1),l=0,r=0;
	for(int i=n;i>=1;i--){
		a[i*2-1]=a[i];
		a[i*2]='#';
	}
	n=n*2-1;
	int ans=0;
	for(int i=1;i<=n;i++){
		if (i<r) p[i]=min(r-i+1,p[l+r-i]);
		while(i>p[i]&&i+p[i]<=n&&a[i+p[i]]==a[i-p[i]]) p[i]++;
		if (i+p[i]>r) r=i+p[i]-1,l=i-p[i]-1;
		ans=max(ans,p[i]); 
	}
	cout<<ans<<endl;
	return 0;
}
2025/7/23 23:48
加载中...