社区讨论
最后1个点TLE,求调
P1210[USACO1.3] 最长的回文 Calf Flac参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjdscaz
- 此快照首次捕获于
- 2025/11/04 00:55 4 个月前
- 此快照最后确认于
- 2025/11/04 00:55 4 个月前
//
CPP#include <iostream>
using namespace std;
string purs;
const int N=3e4+10;
char orstr[N];
int pos[N];
int ans,orsi;
int pan(char c)
{
if(c<='Z'&&c>='A') return 2;
else if(c<='z'&&c>='a') return 1;
else return 0;
}
bool is(int a,int b)
{
for(int i=a;i<=b;i++)
{
if(purs[i]!=purs[a+b-i]) return 0;
}
return 1;
}
int main()
{
string s1;
while(getline(cin,s1))
{
for(int i=0;i<s1.size();i++)
{
orstr[orsi++]=s1[i];
}
orstr[orsi++]='\n';
}
//cout << orstr;
for(int i=0;i<orsi;i++)
{
if(!pan(orstr[i])) continue;
if(pan(orstr[i])==2)
{
purs+=(orstr[i]-'A'+'a');
pos[purs.size()-1]=i;
}else
{
purs+=orstr[i];
pos[purs.size()-1]=i;
}
}
//cout << purs;
int i1,j1;
for(int i=0;i<purs.size();i++)
{
for(int j=purs.size()-1;j>=i;j--)
{
if(is(i,j))
{
if(j-i>ans)
{
ans=j-i;
i1=i;
j1=j;
}
break;
}
}
}
cout << ans+1 << endl;
int i2=pos[i1],j2=pos[j1];
for(int i=i2;i<=j2;i++) cout << orstr[i];
return 0;
}
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...