kmp算法
文章平均质量分 74
老年退役选手
BAT打工人
展开
-
HDOJ3336 KMP简单应用+模板程序
Count the stringTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11181 Accepted Submission(s): 5210Problem Description It is well known that原创 2017-08-28 15:30:12 · 202 阅读 · 0 评论 -
codeforces 625B KMP水题
题意:给定一个模板串,问该字符串在文本串出现的次数。KMP算法水过。。代码如下:#include #include #include using namespace std;const int maxn = 1e5+10;char text[maxn],p[maxn];int Next[maxn];int len;int ans;void get_next原创 2017-10-22 19:30:02 · 389 阅读 · 0 评论 -
codeforces 182D KMP+math
分析:求两个字符串公共循环节的个数。可以肯定的是,如果两个字符串有公共循环节,那么最短的循环节一定都是len-Next[len]长度。首先我们求出两个串的最短循环节长度,然后进行比对,如果符合。不断的增加长度,并要满足循环节长度是两个字符串长度的公约数。代码如下:#include #include #include using namespace std;cons原创 2017-10-22 17:48:06 · 254 阅读 · 0 评论 -
UVA455 KMP求最小循环节长度
分析:若字符串第x位 有 len%(len-Next[x])==0 && Next[x]!=0 那么 len - Next[x] 是字符串的一个循环节。 因为要求最小循环节,x一开始从 len开始往前找。 当前第x位不符合就沿着Next数组往前找。代码如下:#include #include using namespace std;const int maxn =原创 2017-10-21 09:14:54 · 291 阅读 · 0 评论 -
UVA475 KMP算法题
分析:题意个人感觉比较难懂。。英语太弱。。大意是给定一个带有通配符的字符串,后面紧跟着列出一大堆字符串,需要你查找其中符和格式的字符串。。根据星号所在位置对原字符串进行分割。然后通过KMP算法进行匹配。特别注意的是如果没有一个符合条件的字符串,那么不输出任何东西,换行也免了。原创 2017-10-20 19:31:40 · 262 阅读 · 0 评论 -
UVA10298 KMP简单题
代码如下:#include #include using namespace std;const int maxn = 1e6+10;char s[maxn];int Next[maxn];int n;void get_Next(){ Next[0] = Next[1] = 0; int j = 0; for (int i=1; i<n; i++) {原创 2017-10-20 14:20:12 · 181 阅读 · 0 评论 -
UVA11475 KMP算法简单运用
分析:补上最少的字符,使得字符串是个回文串。KMP算法,把原串和逆串匹配,求出最大重合部分,最后输出。代码如下:#include #include #include using namespace std;const int maxn = 1e5+10;int Next[maxn];char s[maxn],p[maxn];int len;void get_next原创 2017-10-20 09:25:32 · 237 阅读 · 0 评论 -
UVA12012 KMP简单应用
分析:一个长度为n的串,问子串是1~n循环串的最长长度。利用KMP算法可以求出最小循环节的长度跟循环次数。如果一个长度为len的字符串,如果 len%(len-next[len])==0&&next[len]!=0就说明字符串循环 。循环节长度为len-next[len] 循环次数为len/(len-next[len])。本题循环串不一定出现在串首,因此要枚举这个原创 2017-10-20 00:00:07 · 195 阅读 · 0 评论 -
CF 454B Little Pony and Sort by Shift KMP算法简单运用
CF 454B题目链接分析:让原始序列变成 2*n的长度 。然后用kmp算法找到 模式串的位置,然后记录位置d, n - d就是它的执行次数。如果没有匹配到,就不能变成之前的样子。代码如下:#include #include using namespace std;const int maxn = 1e5+10;int n;i原创 2017-10-19 22:29:07 · 200 阅读 · 0 评论 -
CF 631D KMP运用
D. Messengertime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputEach employee of the "Blake Techologies" compa原创 2017-10-19 17:36:01 · 499 阅读 · 0 评论 -
CF126B KMP算法运用
CF126B题目链接分析:给定一个字符串,查找既是前缀又是后缀且在中间部分出现的最长子串。模式字符串记为P(下标从0开始),next[q] = k 表示P[q]之前的子串中,存在长度为k的相同前缀和后缀,即P[0]~P[k-1]与P[q-k]~P[q-1]依次相同。所以只要判断Next[i]是否在中间出现过即可,使用set容器记录。代码如下:#inclu原创 2017-10-19 09:49:43 · 558 阅读 · 0 评论 -
LA3026 KMP算法简单使用
分析:根据Next数组的含义不难知道,错位部分长度为i-Next[i]。如果这i个字符组成一个周期串,那么错位的部分恰好是一个循环节,因此k(i-Next[i])=i。注意k>1,因此i-Next[i]不能等于i,即必须有Next[i]>0.代码如下:#include #include using namespace std;const int maxn = 1e6+10;原创 2017-10-19 09:01:17 · 390 阅读 · 0 评论 -
HDOJ2203亲和串 KMP水题
亲和串Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15477 Accepted Submission(s): 6829Problem Description人随着岁数的增长是越大越聪明还是越大越笨,原创 2017-08-28 19:31:55 · 258 阅读 · 0 评论 -
HDOJ1686 KMP简单题
OulipoTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15581 Accepted Submission(s): 6140Problem Description The French author Georges Perec原创 2017-08-28 17:25:09 · 309 阅读 · 0 评论 -
HDOJ1711 KMP模板程序
Number SequenceTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 29918 Accepted Submission(s): 12609Problem Description Given two sequences原创 2017-08-28 15:57:43 · 283 阅读 · 0 评论 -
UVA11557 KMP+HASH
分析:n个文本,每个文本有一个文本名。现在给出一个文本,求给定文本和n个文本中连续相同行数最大值,并且输出相应的文本名。最大值为0不需要输出文件名。HASH + KMP,对所有文本枚举进行匹配,寻找最大值。代码如下:#include #include #include #include #include using namespace std;const原创 2017-10-21 11:31:40 · 192 阅读 · 0 评论