1355: [Baltic2009]Radio Transmission
2017-08-12 08:44
211 查看
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 958 Solved: 659
[Submit][Status][Discuss]
cabcabca
答案=L-P[L];
Submit: 958 Solved: 659
[Submit][Status][Discuss]
Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.Output
输出最短的长度Sample Input
8cabcabca
Sample Output
3HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串Source
KMP算法的裸题答案=L-P[L];
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int MAXN=1000010; void read(int &n) { char c='+';int x=0;bool flag=0; while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} while(c>='0'&&c<='9')x=x*10+c-48,c=getchar(); n=flag==1?-x:x; } char a[MAXN]; int p[MAXN]; int l=0; void getp() { int j=0; for(int i=1;i<l;i++) { while(a[i]!=a[j]&&j>0) j=p[j-1]; if(a[i]==a[j])j++; p[i]=j; } printf("%d",l-p[l-1]); } int main() { int meiyong;read(meiyong); scanf("%s",a); l=strlen(a); getp(); return 0; }
相关文章推荐
- BZOJ 1355 [Baltic2009]Radio Transmission Hash/KMP
- 【 bzoj 1355 】 [Baltic2009]Radio Transmission - KMP
- bzoj 1355: [Baltic2009]Radio Transmission【kmp】
- bzoj 1355: [Baltic2009]Radio Transmission
- BZOJ 1355: [Baltic2009]Radio Transmission [KMP 循环节]
- [BZOJ1355][Baltic2009][KMP]Radio Transmission
- 【BZOJ】1355 [Baltic2009]Radio Transmission
- [bzoj1355][Baltic2009]Radio Transmission_KMP
- 【BZOJ 1355】 [Baltic2009]Radio Transmission
- 1355: [Baltic2009]Radio Transmission[循环节]
- BZOJ1355: [Baltic2009]Radio Transmission
- BZOJ1355: [Baltic2009]Radio Transmission
- 1355: [Baltic2009]Radio Transmission
- 【BZOJ 1355】 [Baltic2009]Radio Transmission
- BZOJ1355: [Baltic2009]Radio Transmission
- BZOJ 1355: [Baltic2009]Radio Transmission( kmp )
- 【BZOJ1355】【Baltic2009】Radio Transmission 详细证明【KMP】
- 【bzoj1355】【Baltic2009】【Radio Transmission】【kmp】
- [BZOJ1355][Baltic2009]Radio Transmission(kmp)
- Bzoj 1355: [Baltic2009]Radio Transmission(kmp)