![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KMP
文章平均质量分 78
hcx11333
菜鸡一枚,成长ing。。。
展开
-
HDU3374 String Problem(KMP + 最大最小表示)
题意:给一个长度n的字符串,则它循环左移有n种情况,分别标号1,2,3....n,其中原串是1.输出最小串第一次出现的序号、最小串出现次数、最大串第一次出现的序号、最大串第一次出现的次数。思路:最大串和最小串一定存在,最大最小表示法专门用来求解这类问题。其中要求输出次数,易知,当结果的出现次数大于1时,原串一定是个循环串,利用KMP算法求出循环节长度就可以得到循环次数了。#原创 2017-08-16 17:18:07 · 176 阅读 · 0 评论 -
HDU5442 Favorite Donut(KMP+最大表示法)
题意:给一个环,要找出里面的最大的串,输出串最大时起点的下标(从1开始)和顺时针(0)还是逆时针(1)。如果有多种情况就输出最小的下标,如果顺时针和逆时针相同就选择顺时针。思路:正逆各用一次最大表示法即可。对于逆时针,因为要考虑字符串的循环对下标的影响,因此在与顺时针方向比较之前先做一次KMP,求出循环节长度。#include#include#include#incl原创 2017-08-17 17:37:11 · 195 阅读 · 0 评论 -
HDU1358 Period(KMP)
题意:给一个长度为n的串,求出它所有是”periodic string”的前缀子串,”periodic string”是任意一个串的循环。输出”periodic string”的长度和循环次数。思路:想了好久发现还是利用KMP里面next数组的性质。举例子可以看出,如果到i位置的前缀是周期串,那么就有 (i + 1) % [(i + 1)-(next[i] + 1)]原创 2017-08-10 17:11:31 · 208 阅读 · 0 评论 -
HDU3746 Cyclic Nacklace(KMP)
题意:给一个字符串,求在这个串末尾最少加多少个字符可以构成一个以任意串为循环节构成的循环串。思路:作为循环节的子串一定是原串的前缀,构成循环穿要将后缀补成循环节。可以利用next数组的性质,tmp = (len - 1) - next[len - 1]; 此时得到的tmp就是循环节的长度。如果len % tmp == 0; 那么原串就是个循环串,不需要添加;否则需要将后缀补成一原创 2017-08-11 15:49:43 · 172 阅读 · 0 评论 -
HDU2328 Corporate Identity(KMP)
题意:给n个串,求最大公共子串,要求字典序最小。思路:数据量小,暴力枚举子串,KMP匹配即可。#include#include#include#include#include#include#include#include#includeusing namespace std;const int inf = 0x3f3f3f3f;const int m原创 2017-08-15 21:54:27 · 445 阅读 · 0 评论 -
HDU2594 Simpsons’ Hidden Talents(KMP)
题意:给两个长度50000以内的字符串,求第一个串的前缀和第二个串的后缀最长的公共部分,输出公共部分和长度。没有就输出0.思路:串的前缀和后缀公共部分的最大长度,这不就是求KMP算法中的next数组嘛!将两个串合并,然后求一次覆盖(next数组),要注意的地方就是合成后求得的子串可能比初始的串长,特判处理一下就行了。#include#include#include#i原创 2017-08-09 20:15:22 · 211 阅读 · 0 评论 -
HDU1238 Substrings(KMP+穷举)
题意:给一组字符串,求最长的串X,X或X的反转串是所有给出的串的子串。思路:长度最大就100,所以暴力就行,找出最短的串,枚举所有子串,和其他串匹配即可,匹配用KMP。#include#include#include#include#include#include#include#includeusing namespace std;const int i原创 2017-08-13 22:22:02 · 214 阅读 · 0 评论 -
KMP模板
1、朴素KMP先是朴素版本的KMP,求解大部分串匹配还有循环节等问题。/*s1:子串s2:母串nxt[0]:-1nxt[i]:s1到第i-1位的最大匹配长度,i=1,2,...,leneg:s1: a b c a a b c d b a b c anxt:-1 0 0 0 1 1 2 0 0 0 1 2 3 4kmp返回字串在母串中出现的第一个位置,没有就是-1*...原创 2018-08-17 17:58:52 · 183 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第九场)F.Typing practice
题目描述 Niuniu is practicing typing.Given n words, Niuniu want to input one of these. He wants to input (at the end) as few characters (without backspace) as possible,to make at least one of the n w...原创 2018-08-17 18:07:29 · 232 阅读 · 0 评论