社区讨论

最后一个点MLE了,怎么优化啊,[玄关]

P1210[USACO1.3] 最长的回文 Calf Flac参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjt897w
此快照首次捕获于
2025/11/04 08:07
4 个月前
此快照最后确认于
2025/11/04 08:07
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
typedef int LL;
const int N=19737+2;
char yuan[N],s[N];
int Ycnt=0,cnt=0;
short duiy[N];
bool p[N][N];
LL ans=INT_MIN,st,ed;
int main()
{
	char c;
	while(c=getchar(),c!=EOF){
		yuan[++Ycnt]=c;
		if('A'<=c&&c<='Z'||'a'<=c&&c<='z')
		{
			duiy[++cnt]=Ycnt;
			if('A'<=c&&c<='Z')c=c+('a'-'A');
			s[cnt]=c;
		}
	}
	LL n=cnt;
	for(int i=n;i>=1;i--){
		p[i][i]=1;
		for(int j=i;j<=n;j++){
			if(s[i]==s[j]){
				if(j-i<=1)p[i][j]=1;
				else p[i][j]=p[i+1][j-1];
			}
			if(j-i+1>=ans&&p[i][j]){
				ans=j-i+1;
				st=i;
				ed=j;
			}
		}
	}
	cout<<ans<<'\n';
	for(int i=duiy[st];i<=duiy[ed];i++)
	{
		cout<<char(yuan[i]);
	}
}

回复

4 条回复,欢迎继续交流。

正在加载回复...