码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 443B Kolya and Tandem Repeat

时间:2015-08-16 10:37:14      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

题目:Click here

 

题意:给定一个字符串(只包含小写字母,并且最长200)和一个n(表示可以在给定字符串后面任意加n(<=200)个字符)。问最长的一条子串长度,子串满足前半等于后半

分析:暴力~~~~~~

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int M = 3e5+3;

int k;
char str[M];
int ans, len, lenth;
bool check( int x, int y )  {   // 判断字符串中[x,y]与[y+1,y-x+1]是否相同
    if( x >= len )  return true;
    for( int i=x; i<=y; i++ )   {
        if( i+lenth >= len ) break;
        if( str[i] != str[i+lenth] ) return false;
    }
    return true;
}
void solve()    {
    len = strlen( str );
    ans = 0;
    for( int i=0; i<len+k-1; i++ )  {
        for( int j=i; j<len+k; j++ )  {
            lenth = j+1-i;
            if( j+lenth >= len+k )  break;
            if( lenth <= ans ) continue;
            if( check( i, j ) ) 
                ans = max( ans, lenth );
            if( ans == (len+k)/2 )  return;
        }
    }
}
int main()  {
    while( ~scanf("%s%d", str, &k ) )   {
        solve();
        printf("%d\n", ans*2 );
    }      
    return 0;
}

 

CodeForces 443B Kolya and Tandem Repeat

标签:

原文地址:http://www.cnblogs.com/TaoTaoCome/p/4733692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!