[Baltic2009]Radio Transmission
生活随笔
收集整理的这篇文章主要介绍了
[Baltic2009]Radio Transmission
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
bzoj 1355: [Baltic2009]Radio Transmission
http://www.lydsy.com/JudgeOnline/problem.php?id=1355
Time Limit: 10 Sec Memory Limit: 64 MBDescription
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.Output
输出最短的长度Sample Input
8cabcabca
Sample Output
3HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串
统计字符串的next
len-next[len]就是答案
证明:
当next[len]>len/2时
当next[len]<=len/2 时
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int n; char s[1000001]; int f[1000010]; void getnext() {for(int i=1;i<n;i++){int j=f[i];while(j&&s[i]!=s[j]) j=f[j];f[i+1]= s[i]==s[j] ? j+1:0;} } int main() {scanf("%d",&n);cin>>s;getnext();printf("%d",n-f[n]); }
转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6484579.html
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的[Baltic2009]Radio Transmission的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 平潭万宝山安置房为什么到现在还不能交房?
- 下一篇: 版本号比较函数-js