Radio Transmission(bzoj 1355)
2024-09-06 02:26:03
Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.
Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.
Output
输出最短的长度
Sample Input
8
cabcabca
cabcabca
Sample Output
3
HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串
/*
答案为n-fail[n]
我们可以分n-fail[n]>=n/2和n-fail[n]<n/2来讨论,画画图就可以得出结论。
*/
#include<cstdio>
#include<iostream>
#define N 1000010
using namespace std;
int fail[N],n;
char s[N];
int main(){
scanf("%d%s",&n,s+);
fail[]=;
for(int i=;i<=n;i++){
int p=fail[i-];
while(p&&s[p+]!=s[i]) p=fail[p];
if(s[p+]==s[i]) fail[i]=p+;
else fail[i]=;
}
printf("%d",n-fail[n]);
return ;
}
最新文章
- mybatis一个怪异的问题: Invalid bound statement not found
- java提高篇(十五)-----关键字final
- 建立php开发环境(XAMPP + Xdebug+Zend Studio)
- codeforces Round #252 (Div. 2) C - Valera and Tubes
- 【py分析】
- while DEMO
- 畅通工程2 HDOJ--1863
- 转:gpio_direction_output 与 gpio_set_value
- MyEclipse汉化后问题
- C#操作Excel总结
- 用ASP编写购物车代码
- javascript表单操作
- python学习===判断两个日期的间距天数
- java把html标签字符转普通字符(反转换成html标签)(摘抄)
- Maven4-仓库
- spring MVC,controller中获得resuqest和response的方式
- oracle 创建表空间 与创建用户与分配用户权限
- 资源打包Assetbundle .
- .NET Core MemoryCache缓存获取全部缓存键
- 80端口被System占用 造成Apache不能启动的解方案