zoukankan      html  css  js  c++  java
  • BZOJ 1355: [Baltic2009]Radio Transmission( kmp )

    自己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 ] << " ";
    return 0;
    }

      

    ----------------------------------------------------------------------------------- 

    1355: [Baltic2009]Radio Transmission

    Time Limit: 10 Sec  Memory Limit: 64 MB
    Submit: 419  Solved: 276
    [Submit][Status][Discuss]

    Description

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

    Input

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

    Output

    输出最短的长度

    Sample Input

    8
    cabcabca

    Sample Output

    3

    HINT

    对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串

    Source

  • 相关阅读:
    selenium+python+API分类总结
    Web自动化测试之六、Selenium Web控件交互
    五、Selenium元素定位的八种方法
    五、X-PATH定位元素
    五、css_selector定位总结
    pytest测试框架实战一
    python实战2
    pycharm 远程开发
    python 虚拟环境
    爬虫案例_网易云歌单
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4558794.html
Copyright © 2011-2022 走看看