BZOJ 1355: [Baltic2009]Radio Transmission( kmp )
2015-06-07 17:48
309 查看
自己YY一下可以发现answer = n - fail[ n ]
-----------------------------------------------------------------------------------
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; i++ )#define clr( x , c ) memset( x , c , sizeof( x ) )#define Rep( i , n ) for( int i = 1 ; i < n ; ++i ) using namespace std; const int maxn = int( 1e6 ) + 5; char S[ maxn ];int fail[ maxn ];int len;void build_fail() { fail[ 0 ] = fail[ 1 ] = 0; Rep( i , len ) { int t = fail[ i ]; while( t && S[ t ] != S[ i ] ) t = fail[ t ]; fail[ i + 1 ] = S[ t ] == S[ i ] ? t + 1 : 0; } } void Read() { cin >> len; rep( i , len ) { char c = getchar(); while ( ! islower( c ) ) c = getchar(); S[ i ] = c; } }int main() {// freopen( "test.in" , "r" , stdin ); Read(); build_fail(); cout << len - fail[ len ] << "\n"; return 0;}
-----------------------------------------------------------------------------------
1355: [Baltic2009]Radio Transmission
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 419 Solved: 276
[Submit][Status][Discuss]
Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.Input
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.Output
输出最短的长度Sample Input
8cabcabca
Sample Output
3HINT
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串Source
相关文章推荐
- JQuery学习笔记(二)
- 浅谈工作中使用过的几种C++界面库
- EIGRP概述
- EIGRP概述
- 多个点击显示隐藏例子代码
- 一篇相当不错的js function详解 读了一定有收获
- 站立会议2第六天(补)
- Skype for Business Server 2015-08-反向代理-发布-统一沟通
- Skype for Business Server 2015-08-反向代理-发布-统一沟通
- The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the argument
- find命令查找包含指定内容的文件
- 更改MySQL的默认事务隔离级别
- JQuery中的事件和动画
- 同一个事务内修改两次,第二次改回原状会不会产生binlog,改前改后相同会不会产生binlog
- Sink Prosessor - Flume的可靠性保证:故障转移、负载均衡
- “ant debug install” 出错: sdk.dir is missing. Make sure....
- XP用户 慎用360最新版 安全卫士使用有感
- Activity的生命周期和创建按方式
- ActionForm中validate()方法 -- 一个细节
- 社会主义市场经济的宏观调控