bzoj1355Baltic2009Radio Transmission
Posted AaronPolaris
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1355Baltic2009Radio Transmission相关的知识,希望对你有一定的参考价值。
1355: [Baltic2009]Radio Transmission
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 649 Solved: 426
[Submit][Status][Discuss]
Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.
Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.
Output
输出最短的长度
Sample Input
8
cabcabca
cabcabca
Sample Output
3
HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串
KMP,答案等于n-fail[n]。
#include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define F(i,j,n) for(int i=j;i<=n;i++) #define D(i,j,n) for(int i=j;i>=n;i--) #define ll long long #define maxn 1000005 using namespace std; int n,f[maxn]; char s[maxn]; int main() { scanf("%d%s",&n,s+1); int j=0; F(i,2,n) { while (s[j+1]!=s[i]&&j) j=f[j]; if (s[j+1]==s[i]) j++; f[i]=j; } printf("%d\n",n-f[n]); return 0; }
以上是关于bzoj1355Baltic2009Radio Transmission的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ-1355: [Baltic2009]Radio Transmission (傻逼KMP)
bzoj 1355: [Baltic2009]Radio Transmissionkmp
[bzoj1355][Baltic2009]Radio Transmission_KMP
BZOJ1355: [Baltic2009]Radio Transmission