1 条题解
-
0
#include<iostream> #include <bits/stdc++.h> using namespace std; char s[22000005]; char ss[22000005]; int p[22000005]; int lenss,lens,id=0,maxlen=0,maxn,cnt; int main() { // freopen("calf.in","r",stdin); // freopen("calf.out","w",stdout); int i=0; while(scanf("%c",&s[i])!=EOF) { if(s[i]<=90&&s[i]>=65) ss[lenss++]=char(s[i]); else if(s[i]<=122&&s[i]>=97) ss[lenss++]=char(s[i]-32); i++; } for(int i=lenss; i>=0; --i) { ss[i+i+2]=ss[i]; ss[i+i+1]='#'; } ss[0]='*'; for(int i=2; i<2*lenss+1; ++i) { if(p[id]+id>i)p[i]=min(p[2*id-i],p[id]+id-i); else p[i]=1; while(ss[i-p[i]] == ss[i+p[i]])++p[i]; if(id+p[id]<i+p[i])id=i; if(maxlen<p[i]) { maxlen=p[i]; maxn=i; } } cout<<maxlen-1<<endl; return 0; }
信息
- ID
- 1487
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者