re求助
查看原帖
re求助
220824
yyz1005楼主2022/7/5 10:04

rt 样例过了

但是会这样:

输入 abcdcbae

输出 7,但是会提示RE

#include<bits/stdc++.h>
using namespace std;
string s,c;
int p[25000000],n,mx = 0,id = 0;
int main(){
	cin >> s;
	n = s.length();
	c[1] = '^';
	for(int i = 1; i <= n; i++){
		c[2*i] = '$';
		c[2*i+1] = s[i-1];
	}
	c[n*2+2] = '$';
	c[n*2+3] = '@';
	for(int i = 1; i <= n*2+3; i++){
		p[i] = (mx>i?min(p[2*id-i],mx-i):1);
		while(i-p[i]>=1&&i+p[i]<=2*n+3&&c[i-p[i]]==c[i+p[i]]){
			p[i]++;
		}
		if(i+p[i]>mx){
			mx = i+p[i];
			id = i;
		}
	}
	int ans = 0;
	for(int i = 1; i <= 2*n+3; i++) ans = max(ans,p[i]);
	printf("%d",ans-1);
	return 0;
}
2022/7/5 10:04
加载中...