1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=2e3+5; int n,ans=0; string a[N],cp; int nxt[N]; void inti(string s){ nxt[0]=-1; for(int i=0,j=-1;i<s.size();){ if(s[i]==s[j]||j==-1) nxt[++i]=++j; else j=nxt[j]; } } int KMP(string a,string b){ int ans=-1; for(int i=0,j=0;i<a.size();){ if(a[i]==b[j]&&j==b.size()-1){ return b.size(); } else if(a[i]==b[j]||j==-1){ ans=max(ans,j); i++;j++; } else j=nxt[j]; } return ans+1; } int cheke(string b){ int ans=1e9; inti(b); for(int i=1;i<=n;i++) ans=min(KMP(a[i],b),ans); return ans; } int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=0;i<a[1].size();i++){ string cp=""; for(int j=i;j<a[1].size();j++) cp+=a[1][j]; ans=max(cheke(cp),ans); } cout<<ans; return 0; }
- 1
信息
- ID
- 4611
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 69
- 已通过
- 17
- 上传者