样例都过但是全WA?
查看原帖
样例都过但是全WA?
1017629
ZSB00000楼主2025/7/28 12:43
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int p[(int)8e5+5];
string ss; 
int cnt[(int)8e5+5];
int main()
{
	cin>>n;
	cin>>s;
	ss+='#';
	for(int i=0;i<s.size();i++)
	{
		ss+=s[i];
		ss+='#';
	}
	int r=0,c=0;
	for(int i=0;i<ss.size();i++)
	{
		if(i<=r)p[i]=min(r-i,p[2*c-i]);
		else p[i]=1;
		while(ss[p[i]+i]==ss[i-p[i]])p[i]++;
		if(i+p[i]>r)
		{
			r=i+p[i];
			c=i;
		}
		ans=max(ans,p[i]);
		cnt[i]=i+p[i]-1;
	}
	int x=0;
	for(int i=0;i<ss.size();i++)
	{
		if(cnt[i]==ss.size()-1)
		{
			x=cnt[i]-i+1;
			break;
		}
	}
	cout<<s.size()-x+1;
	return 0;
}

主要思路是找到以末尾为结尾的回文串长度,然后减一下,但直接WA on#1了,求助。
玄关

2025/7/28 12:43
加载中...