![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串-kmp
文章平均质量分 64
HelloWorld10086
追随大神的脚步
展开
-
HDU-1711 Number Sequence(kmp入门)
这题是kmp的模板题,关于kmp的解析我认为这篇博文写得bi原创 2014-10-25 12:06:59 · 622 阅读 · 0 评论 -
UVALive 2426 Multiple Morse Matches(kmp+dp)
题意: 将下面给的字符串转成莫斯电码,问完全由下面的字符串转化而成的莫斯电码一共有多少种情况。 解释样例:第一种为ATTACK+DAWNATTACK+DAWN,第二种为AT+TACK+DAWNAT+TACK+DAWN。思路: 先用KMP求出每个小的字符串匹配串的结束位置,然后转化为一个邻接表,求出该邻接表,从1开始到lenT结束共有几条路径。 这里可以用dp来求解,dp公式比较原创 2015-07-17 18:53:48 · 555 阅读 · 0 评论 -
HDU 2594 Simpsons’ Hidden Talents(kmp)
题意: 输入 s1、s2,问s1的后缀 以及s2的前缀中 相同的字符最多有多少个?是什么?解析: 利用前缀后缀特性,把两个字符串接起来,按照前面那题的方法,来求前缀后缀子串,注意其终止条件的变化,这里前缀后缀子串的长度必须小于s1,s2长度的最小值。mymy codecode#include <cstdio>#include <cstring>#include <algorithm>原创 2015-07-17 19:03:23 · 424 阅读 · 0 评论 -
POJ 2406 Power Strings(kmp循环节)
题意: 求一个字符串中最多有多少重复的子串。解析: 利用KMP算法的性质,求解。 不知道怎么证明,姑且记下结论, 当lenlen % (len-next[len])=0时,T=len/(len−next[len]))T=len/(len-next[len]))AC代码:#include <cstdio>#include <cstring>#include <algorit原创 2015-05-19 08:14:30 · 470 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame(kmp)
题意: 给你一个串,如果这个串存在一个长度为n的前缀串,和长度为n的后缀串,并且这两个串相等,则输出他们的长度n。求出所有的长度n。解析: 此题考察kmp next[]数组的应用,不难。AC代码:#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <cstdlib>us原创 2015-05-19 08:30:48 · 557 阅读 · 0 评论 -
POJ 1961 Period(kmp循环节)
题意: 考察一个字符串的从开始的子串是周期的并且计算出周期,kmp最小循环节问题。解析: 这篇题解有对kmp循环节的证明 http://blog.csdn.net/scorpiocj/article/details/6295913AC代码:#include <cstdio>#include <cstring>#include <algorithm>#include <cmat原创 2015-05-19 08:25:45 · 526 阅读 · 0 评论 -
Acdream 1116 Gao the string!(exkmp+矩阵快速幂)
题意: 要求你求出任意一个前缀,在后缀中出现的次数,并把这个次数对应于fibonacci数列,并求数列的和。解析: 扩展KMP里的next数组中next[i]表示以字符串s的后缀i和s的前缀匹配的最长的长度,有了这个就可以用来求上次的这道题了。 那么next[i]+next[i+1]+..next[n-1]就是前缀在后缀i里出现的次数总和 然后套矩阵快速幂求fibonacci数原创 2015-05-17 10:20:33 · 684 阅读 · 0 评论 -
从头到尾彻底理解扩展KMP
1. 扩展KMP问题:求字符串S的所有后缀和字符串T的最长公共前缀。 扩展KMP可以用来解决很多字符串问题,如求一个字符串的最长回文子串和最长重复子串。2. 拓展KMP的next[]数组怎么计算?在解上面这个问题前我们要先解决一个类似的问题:求字符串s的所有后缀和字符串s本身的最长公共前缀; 我们用next[]数组保存这些值;现在我们假设要求next[x]next[x],并且next[i]next原创 2015-05-16 09:01:22 · 1121 阅读 · 0 评论 -
HDU-2087 剪花布条(kmp)
题目大意很好理解,我就不啰嗦了,直接贴代码。原创 2014-10-25 12:14:44 · 888 阅读 · 0 评论 -
hdu 5442 Favorite Donut(kmp+最小表示法)
题意: 有一个lenlen长度的环,问有没有字典序最大长度为lenlen的串在 这个环里。 如果有的话,且只有一个 ,输出其开头的下标(下标从1 开始) 再输出0表示顺时针(从左至右),1 表示逆时针(从右至左) 如果多个,输出开头下标最小的那个。 如果顺时针,逆时针的字典序一样,且开头下标一样,优先输出输出顺时针。解析:参考了别人的题解,用最小表示法来做。 循环字符原创 2015-09-24 14:55:44 · 795 阅读 · 0 评论