开了两倍空间依旧RE,求助
查看原帖
开了两倍空间依旧RE,求助
671995
ciciliyu楼主2023/4/15 10:09

rt, stringstring 和 charchar 都试了,空间也开了两倍,依旧全部RERE

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 22000005
string ss;
char s[maxn>>1];
int aa,hw[maxn],ans=-1,cnt;
void gett()
{
	char c=getchar();
	s[0]='-',s[cnt=1]='#';
	while(c<'a'||c>'z')
	  c=getchar();
	while(c>='a'&&c<='z')
	  s[++cnt]=c,s[++cnt]='#',c=getchar();
}
void getlongest()
{
		int mr=0,mid=1;
		for(int i=1;i<cnt;i++){
			if(i<mr)
			  hw[i]=min(hw[mid*2-i],mr-i);
			else  hw[i]=1;
		while(s[i+hw[i]]==s[i-hw[i]])
		  hw[i]++;
		if(hw[i]+i>mr){
			mr=hw[i]+i;
			mid=i;
		}
		ans=max(ans,hw[i]);
		}
	ans-=1;
}
signed main()
{
	gett();
	getlongest();
	cout<<ans<<endl;
	return 0;
}

2023/4/15 10:09
加载中...