社区讨论
最后一个点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 条回复,欢迎继续交流。
正在加载回复...