RE,求调
查看原帖
RE,求调
1127126
yueyan_WZF楼主2023/12/2 16:28
#include<bits/stdc++.h>
using namespace std;
long long maxx=11000000;

char str[2200150];
long long d[1100050];
int manacher(char *s){
	int n=0,len=strlen(s+1);
	str[0]='-';
	for(int i=1;i<=len;i++){
		str[++n]='#';
		str[++n]=s[i];
	}
	str[++n]='#',str[++n]='-';	
	long long ans=0;
	long long r=0,p=0;
	for(int i=1;i<=n-2;i++){
		if(i<r){
			d[i]=min(d[2*p-i],r-i);
		}
		else{
			d[r=i]=1;
		}
		while(i+d[i]<=n&&i-d[i]>=1&&str[i-d[i]]==str[i+d[i]])
            d[i]++;
        if(i+d[i]>r)
            r=i+d[i]-1,p=i;
        if(ans<d[i]-1){
        	ans=d[i]-1;
        }
	}
	return ans;
}	
char s[1100050];
int main(){

	scanf("%s",s+1);
	printf("%d",manacher(s));
	return 0;
} 

为什么12个RE

2023/12/2 16:28
加载中...