欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

[Baltic2009]Radio Transmission

发布时间:2024/10/12 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [Baltic2009]Radio Transmission 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

bzoj 1355: [Baltic2009]Radio Transmission

http://www.lydsy.com/JudgeOnline/problem.php?id=1355

Time Limit: 10 Sec  Memory Limit: 64 MB

Description

给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.

Input

第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.

Output

输出最短的长度

Sample Input

8
cabcabca

Sample Output

3

HINT

对于样例,我们可以利用"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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。