题目链接:http://codeforces.com/contest/443/problem/B

题目意思:给出一个只有小写字母的字符串s(假设长度为len),在其后可以添加 k 个长度的字符,形成一个长度为len+k的新串 s'。问在 s' 中,可以形成的最长tandem repeat 是 多长。tandem repeat 的定义是:si = si+n (1 <= i <= n; 2*n <= k+len)

注意,这个tandem repeat 是相邻的!!也就是对于abcwerabc?? (??,表示可以添加的长度为k = 2),如果?? 填入we,并不代表之前的abcwe(a下标:0)== abcwe(a下标:6),因为中间多了个r  !答案其实是4。只能将?? 变为 bc,这样的tandem repeat 的长度为2*2 = 4(两个bc相等)

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = + ;
char str[maxn]; int main()
{
int k;
while (scanf("%s%d", str, &k) != EOF)
{
int len = strlen(str);
if (len <= k)
printf("%d\n", (len+k)& ? len+k-: len+k);
else
{
int ans = ;
for (int i = ; i < len; i++) // 枚举原串s的每个位置
{
for (int j = i+; *j-i <= len+k; j++) // 2*j-i <= len+k:控制住si+n不大于新串s'的长度
{
bool ok = true;
for (int l = ; l < j-i && l+j < len; l++) // 枚举间隙,j-i代表间隙,也就是题目中si = si+n中的n
{
if (str[i+l] != str[j+l])
{
ok = false;
break;
}
}
if (!ok)
continue;
ans = max(ans, *(j-i));
}
}
printf("%d\n", ans);
}
}
return ;
}

  补充一点,对于l+j < len 这个条件是必不可少的!因为它保证比较的是原序列 s 的字符有 tandem repeat,这些字符是确定的。而对于后面添加的 k 个字符是不确定的,所以就不能单纯用str[i+l] = str[j+l] 来比较了。但由于有 2*j - i <= len+k,所以j 的值还是可以取的(一直ok = true),它默认 k 个字符中任意填字符,可以使得s' 有 tandem repeat,2*(j-i)就是求出repeat的长度了。

codeforces 443 B. Kolya and Tandem Repeat 解题报告的更多相关文章

  1. Codeforces 443 B. Kolya and Tandem Repeat

    纯粹练JAVA.... B. Kolya and Tandem Repeat time limit per test 2 seconds memory limit per test 256 megab ...

  2. Codeforces 443 B Kolya and Tandem Repeat【暴力】

    题意:给出一个字符串,给出k,可以向该字符串尾部添加k个字符串,求最长的连续重复两次的子串 没有想出来= =不知道最后添加的那k个字符应该怎么处理 后来看了题解,可以先把这k个字符填成'*',再暴力枚 ...

  3. cf443B Kolya and Tandem Repeat

    B. Kolya and Tandem Repeat time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  4. Kolya and Tandem Repeat

     Kolya and Tandem Repeat time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  5. CF B. Kolya and Tandem Repeat

    Kolya got string s for his birthday, the string consists of small English letters. He immediately ad ...

  6. Codeforces Round #253 (Div. 2) B - Kolya and Tandem Repeat

    本题要考虑字符串本身就存在tandem, 如测试用例 aaaaaaaaabbb 3 输出结果应该是8而不是6,因为字符串本身的tanderm时最长的 故要考虑字符串本身的最大的tanderm和添加k个 ...

  7. CodeForces 443B Kolya and Tandem Repeat

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

  8. codeforces 814B.An express train to reveries 解题报告

    题目链接:http://codeforces.com/problemset/problem/814/B 题目意思:分别给定一个长度为 n 的不相同序列 a 和 b.这两个序列至少有 i 个位置(1 ≤ ...

  9. codeforces 558B. Amr and The Large Array 解题报告

    题目链接:http://codeforces.com/problemset/problem/558/B 题目意思:给出一个序列,然后找出出现次数最多,但区间占用长度最短的区间左右值. 由于是边读入边比 ...

随机推荐

  1. Codeforces 849B Tell Your World (计算几何)

    题目链接 Tell Your World 题意 给出N个点(i, xi),问是否存在两条平行的直线,使得每一个点恰好在两条直线的其中一条上. 每条直线必须穿过至少一个点. 考虑每个点和第1个点的斜率, ...

  2. json常见用法-loads、jumps、load、jump

    这一篇博客的目的主要是想说明一个问题:干什么事情要抓住重点,不要力求完美,不要追求那种'大而全'的办事方式,因为时间是有限的,而客观事物(这里主要指技术方面的知识)是无限的,so,anyway! 1. ...

  3. @font-face制作小图标的实践

    1.为啥要用font-face制作小图标 1)适用性:一个图标字体要比一系列的图像要小,一旦字体图标加载完,图标则会立刻显示出来,不需要去下载一个图像. 2)可扩展性:可以使用font-size对图标 ...

  4. BZOJ1017魔兽地图DotR 樹形DP

    @(BZOJ)[樹形DP, 三維DP] Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA ...

  5. centos 7 卸載 mysql

    跟網上文章,安裝了一個mysqlwget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 記下卸載過程: 首先执行查看命令 ...

  6. 《ASP.NET》数据绑定—DataList实践篇

    上篇文章大概讲了DataList的一些基础知识,掌握这些知识在将来的应用中起到非常大的作用,如今我们就開始讲上篇文章中说的基础知识做一个小样例. 首先,我机子的数据库中有一张person表.例如以下图 ...

  7. python—networkx:依据图的权重绘图

    首先输入边和边的权重,随后画出节点位置.依据权重大小划分实边和虚边 #coding:utf-8 #!/usr/bin/env python """ An example ...

  8. Volatile的特征

    Volatile的特征: A.禁止指令重排(有例外)原理: 内存屏障/内存栅栏B.可见性  原理:happens-before 对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工 ...

  9. centos 7.xx 安装LAMP环境

    一.安装Apache 1.安装yum -y install httpd2.开启apache服务systemctl start httpd.service3.设置apache服务开机启动systemct ...

  10. I want a mysqldump –ignore-database option

    $ time mysqldump --databases `mysql --skip-column-names -e "SELECT GROUP_CONCAT(schema_name SEP ...