<题目链接>

题目大意:

给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。

【>>>kmp next函数 kmp的周期问题】 

解题分析:
KMP求循环节入门题。

#include <bits/stdc++.h>
using namespace std; const int N = 1e5+;
char s[N];
int len,nxt[N]; inline void getnxt(){
int j=,k=-;
nxt[]=-;
while(j<len){
if(k==- || s[j]==s[k]) nxt[++j]=++k;
else k=nxt[k];
}
}
int main(){
int T;cin>>T;while(T--){
scanf("%s",s);
len=strlen(s);
getnxt();
if(nxt[len]==){ //不含循环多次的循环节,要循环两次,还需要添加自身
printf("%d\n",len);continue;
}
int cir=len-nxt[len]; //计算出最小的循环节
if(len%cir== && len/cir>) puts("");
else printf("%d\n",cir-len%cir);
}
}

HDU 3746 Cyclic Nacklace (KMP求循环节问题)的更多相关文章

  1. hdu 3746 Cyclic Nacklace (KMP求最小循环节)

    //len-next[len]为最小循环节的长度 # include <stdio.h> # include <algorithm> # include <string. ...

  2. HDU 3746 Cyclic Nacklace(kmp next数组运用)

    Cyclic Nacklace Problem Description CC always becomes very depressed at the end of this month, he ha ...

  3. hdu 3746 Cyclic Nacklace(kmp最小循环节)

    Problem Description CC always becomes very depressed at the end of this month, he has checked his cr ...

  4. HDU 3746 Cyclic Nacklace (KMP找循环节)

    题目链接:HDU 3746 Sample Input 3 aaa abca abcde Sample Output 0 2 5 Author possessor WC Source HDU 3rd & ...

  5. hdu 3746 Cyclic Nacklace KMP循环节

    Cyclic Nacklace 题意:给一个长度为Len( 3 <= Len <= 100000 )的英文串,问你在字符串后面最少添加几个字符可以使得添加后的串为周期串? Sample I ...

  6. HDU 3746 Cyclic Nacklace KMP

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3746 KMP算法—— AC代码: #include <iostream> #include ...

  7. HDU 3746 Cyclic Nacklace(求补齐循环节最小长度 KMP中next数组的使用 好题!!!)

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. 模板题 + KMP + 求最小循环节 --- HDU 3746 Cyclic Nacklace

    Cyclic Nacklace Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3746 Mean: 给你一个字符串,让你在后面加尽 ...

  9. HDU 3746 Cyclic Nacklace(KMP+最小循环节)题解

    思路: 最小循环节的解释在这里,有人证明了那么就很好计算了 之前对KMP了解不是很深啊,就很容易做错,特别是对fail的理解 注意一下这里getFail的不同含义 代码: #include<io ...

随机推荐

  1. HDU4738 Caocao's Bridges【强连通】

    题意: 曹操有N个岛,这些岛用M座桥连接起来,每座桥有士兵把守(也可能没有),周瑜想让这N个岛不连通,但只能炸掉一座桥,并且炸掉一座桥需要派出不小于守桥士兵数的人去,桥的守兵数为0时,也需要派出一个人 ...

  2. Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  3. cetus系列~安装和基本配置

    cetus系列一 安装   1 安装软件环境   yum install cmake gcc glib2-devel flex mysql-devel gperftools-libs  bison f ...

  4. Web下文件上传下载的路径问题

    工程结构

  5. Linux安装后首次设置root密码

    ① 1.sudo password root //给指定用户设置密码 2.sudo passwd root //给指定用户设置密码 ②su root //切换到指定用户

  6. SpringBoot整合Jest操作ES

    (1).添加依赖 <dependency> <groupId>io.searchbox</groupId> <artifactId>jest</a ...

  7. Libevent源码分析系列

    1.使用libevent库     源码那么多,该怎么分析从哪分析呢?一个好的方法就是先用起来,会用了,然后去看底层相应的源码,这样比较有条理,自上向下掌握.下面用libevent库写个程序,每隔1秒 ...

  8. linux内核中链表代码分析---list.h头文件分析(二)【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16 ...

  9. NTFS文件系统简介

    原文地址:http://www.cnblogs.com/watertao/archive/2011/11/28/2266595.html 1.简介 NTFS(New Technology File S ...

  10. linux更换yum源

    由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除redhat原有的yum rpm - ...