bzoj1355——2016——3——15
2016-03-15 17:39
567 查看
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1355
题目大意:
Submit: 591 Solved: 390
[Submit][Status][Discuss]
cabcabca
(很容易想吧,因为可行解集为{n-next
,n-next[next
]....)所以最小解显然为n-next
;
View Code
题目大意:
1355: [Baltic2009]Radio Transmission
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 591 Solved: 390
[Submit][Status][Discuss]
Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.Output
输出最短的长度Sample Input
8cabcabca
Sample Output
3HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串Source
题解:这题就是KMP next数组的应用啦(水),最小值就是n-next(很容易想吧,因为可行解集为{n-next
,n-next[next
]....)所以最小解显然为n-next
;
#include<iostream> #include<cstring> #include<cstdio> #define inf 0x7fffffff int n,ans; int next[1000100]; char s[1000100]; using namespace std; int main() { scanf("%d",&n); scanf("%s",s+1); ans=0; int fix=0; for (int i=2; i<=n; i++) { while (fix && s[fix+1]!=s[i]) fix=next[fix]; if (s[fix+1]==s[i]) fix++; next[i]=fix; } printf("%d\n",n-next ); }
View Code
相关文章推荐
- Nginx国产缩略图模块 ngx_image_thumb
- 我的2015年
- Linux命令之程序(二)
- 关于Android在线直播问题的讨论与研究
- 封装字典转模型 懒加载 MVC设计模式
- 百度地图获取行政范围边界
- hibernate中Restrictions用法
- jquery分页插件jquery.pagination.js与springmvc整合
- Storm_Storm主要特点
- C#oracle还原imp实例
- yii2.0 的数据的 增
- Linux笔记(45)——计划任务之Crontab
- java代理模式的实现方式
- 12步教你理解Python装饰器
- 使用bochs和gdb联合调试Linux内核
- jak的下载与安装
- PostgreSQL:使用pg_basebackup工具搭建流复制环境以及主备切换方法
- Linux命令之程序(一)
- form标签的几点
- hdoj--5636--Shortest Path(dfs)