zoukankan      html  css  js  c++  java
  • CF B. Kolya and Tandem Repeat

    Kolya got string s for his birthday, the string consists of small English letters. He immediately added k more characters to the right of the string.

    Then Borya came and said that the new string contained a tandem repeat of length l as a substring. How large could l be?

    See notes for definition of a tandem repeat.
    Input

    The first line contains s (1 ≤ |s| ≤ 200). This string contains only small English letters. The second line contains number k (1 ≤ k ≤ 200) — the number of the added characters.
    Output

    Print a single number — the maximum length of the tandem repeat that could have occurred in the new string.
    Sample test(s)
    Input

    aaba
    2

    Output

    6

    Input

    aaabbbb
    2

    Output

    6

    Input

    abracadabra
    10

    Output

    20


    Note


    A tandem repeat of length 2n is string s, where for any position i (1 ≤ i ≤ n) the following condition fulfills: si = si + n.

    In the first sample Kolya could obtain a string aabaab, in the second — aaabbbbbb, in the third — abracadabrabracadabra.

    暴力枚举全部情况

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    char str[205];
    
    int main(){
        int n;
        while(cin>>str>>n){
            int len = strlen(str);
            int L = len+n-(len+n)%2; //保证长度为偶数
            if(len <= n){
               cout<<L<<endl;
               continue;
            }
            int maxlen = 0;
            for(int i=0; i<len; i++){ //枚举起始位置
                for(int j=1; i+j-1<=len-1; j++){ //枚举一半的长度
                    int cnt = 0;
                for(int k=i; k<=i+j-1; k++){ //推断
                    if(len <= k+j && k+j < len+n) cnt++; //下标
                    else if(str[k] == str[k+j]) cnt++;
                }
                if(cnt == j && 2*cnt > maxlen)
                    maxlen = 2*cnt;
                }
            }
            cout<<maxlen<<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    10 款最佳剪贴板管理器
    悉数美剧《黑客军团》中的黑客工具
    Vim的使用方法
    Mysql跨平台(Windows,Linux,Mac)使用与安装
    Linux下网络故障诊断
    RHEL6.2下挂载光驱安装软件
    MySQL数据库服务器的架设
    Unix如何轻松快速复制
    【Linux基础】Linux常用命令汇总
    博客编号数字密码
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5377795.html
Copyright © 2011-2022 走看看