为什么string改成char数组就AC了
查看原帖
为什么string改成char数组就AC了
554803
After_light楼主2023/8/8 20:41
#include<bits/stdc++.h>
#define ll long long
#define F(i,a,b) for(ll i=a;i<=b;i++)
#define R(i,a,b) for(ll i=a;i>=b;i--)
#define sc(a) scanf("%lld",&a)
#define ps(a) printf("%lld ",a)
#define pn(a) printf("%lld\n",a)
using namespace std;
const ll N=5e7+7;
ll cnt,p[N],ans;
string s,c;
inline void fr(){
	cin>>c;
	s[++cnt]='~';
	s[++cnt]='#';
	ll len=c.length();
	c=" "+c;
	F(i,1,len){
		s[++cnt]=c[i];
		s[++cnt]='#';
	}
	s[++cnt]='!';
}
int main(){
	fr();
	ll mid=0,r=0;
	F(i,2,cnt-1){
		if(i<=r) p[i]=min(p[(mid*2)-i],r-i+1);
		else p[i]=1;
		while(s[i+p[i]]==s[i-p[i]]) p[i]++;
		if(i+p[i]>r) r=i+p[i]-1,mid=i;
		ans=max(ans,p[i]);
	}
	pn(ans-1);
	exit(0);
}

RT ,求助

2023/8/8 20:41
加载中...