KMP
CoderCat.
大
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu1711_VJkuangbin16kmp_kmp裸题
裸题。。。打个版#include <cstdio>using namespace std;const int maxn = 1000010;const int maxm = 10010;int n, m;int s[maxn], p[maxm];int next[maxm];void getnext(){ int i = 0, j = -1; ...原创 2018-06-18 20:45:36 · 186 阅读 · 0 评论 -
hdu1686_VJkuangbin16kmp_
题目大意:给定文本串和模式串,问模式串在文本串中出现了多少次打板子。。。#include &lt;cstdio&gt;#include &lt;cstring&gt;using namespace std;const int maxn = 1000010;const int maxm = 10010;int n, m;char s[maxn], p[maxm];int ne...原创 2018-06-18 21:07:19 · 301 阅读 · 0 评论 -
hdu2087_VJkuangbin16kmp_
题目大意:给定文本串和模式串,问模式串在文本串中出现了多少次(不可重叠)打板子。。。#include <cstdio>#include <cstring>using namespace std;const int maxn = 1010;int n, m;char s[maxn], p[maxn];int next[maxn];void getne...原创 2018-06-18 21:21:43 · 201 阅读 · 0 评论 -
hdu3746_VJkuangbin16kmp_ Cyclic Nacklace
题目大意:给定一段字符串,问在首和尾至少添加多少个字符,才能使该字符串形成两段循环next[i]:前i个字符的最长的前缀和后缀的匹配长度字符串的长度是len,则一个循环节的长度就为len - next[len];#include <cstdio>#include <cstring>using namespace std;const int maxn ...原创 2018-06-19 09:27:09 · 206 阅读 · 0 评论 -
hdu1358_VJkuangbin16kmp_Period
题目大意:给定字符串的长度m和字符串,问对于前i(2<=i<=m)个字符串,如果该字符串的长度为该字符串的循环节长度的倍数,则输出i和该倍数循环节长度:cc = i - next[i];#include <cstdio>using namespace std;const int maxn = 1000010;int next[maxn];char p[ma...原创 2018-06-19 10:03:13 · 189 阅读 · 0 评论 -
hdu2594_VJkuangbin16kmp_Simpsons’ Hidden Talents
题目大意:给定两个字符串p, s,问最长的p的前缀是s的后缀,输出该前缀和其长度用p去匹配s,kmp的while退出条件是s的迭代器i >= n,则退出匹配循环后p的迭代器j就为所求前缀的尾部;#include <cstdio>#include <cstring>using namespace std;const int maxn = 50010;...原创 2018-06-19 11:25:07 · 174 阅读 · 0 评论 -
hdu3336_VJkuangbin16kmp_Count the string
题目大意:给定字符串长度m和字符串p,求出该字符串的前缀总数+每个前缀在p中出现的次数思考:(位置编号1~m)一个以i结尾的前缀,若能在p中找到匹配,且设该匹配的结尾是j,那么就等价于p的子串p[1~j]存在这样一个前缀后缀匹配。而且p的一个前缀也等价于以该前缀的结尾为子串的一个前缀后缀匹配。(这种情况是i==j)。并且可以证明,这样的关系是一一对应的。问题转化:题目所求&amp;amp;amp;amp;lt;=&amp;amp;amp;amp;gt;...原创 2018-06-20 13:28:19 · 241 阅读 · 0 评论
分享