![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KMP
蘑菇小哲
在通往梦想的道路上奋力潜行
展开
-
POJ 3461 Oulipo(简单KMP)
解题思路:典型KMP,直接搞。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i,x,y) for(int i=x;i<=y;i++)using namespace std;const in原创 2015-02-01 12:47:57 · 686 阅读 · 0 评论 -
HDU 1711 Number Sequence(KMP)
解题思路: 寻找模版串在文本串中第一次出现的位置,简单的KMP应用。#include #include #include #include #include #include #include using namespace std;const int maxn = 1000000 + 10;int s[maxn], t[maxn];int n, m;int next[m原创 2015-02-01 17:43:42 · 462 阅读 · 0 评论 -
POJ 2406 Power String(KMP)
解题思路:依旧是利用next数组的性质,m % (m - next[m]) == 0;#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i,x,y) for(int i=x;i<=y;i++)u原创 2015-02-02 23:49:48 · 883 阅读 · 0 评论 -
HDU 3336 Count the string(KMP算法next数组的应用)
解题思路: 求前缀数组出现的次数之和,next[i] > 0 表示长度为next[i]的前缀又出现了一次。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i,x,y) for(int i=x;i原创 2015-02-03 10:52:55 · 686 阅读 · 0 评论 -
POJ 1961 Period (KMP)
解题思路: 利用next 数组的性质求解重复子串。循环节的长度为i - next[i];#include #include #include #include #include #include #include using namespace std;const int maxn = 1000000 + 10;char s[maxn];int n;int next[原创 2015-02-01 18:44:48 · 790 阅读 · 0 评论 -
HDU 4763 Theme Section(KMP)
解题思路:只需要判断中间是否存在和前缀后缀相等的字符串即可。#include #include #include #include #include #include #include #include #include using namespace std;const int maxn = 1000000 + 10;char s[maxn];int next[m原创 2015-02-03 16:44:12 · 533 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace(KMP)
解题思路:依旧是next数组性质的应用。题目要求最少需要补充多少个字符构成循环的。而m - next[m 为循环节的长度,m % (m - next[m])为除去循环部分多出的子串长度。#include #include #include #include #include #include #include #include #include #define LL lo原创 2015-02-03 11:11:20 · 409 阅读 · 0 评论 -
HDU 2594 Simpsons’ Hidden Talents(KMP)
解题思路:求相同的前缀和后缀。开一个数组保存到i位置,模式串有多少个字符和文本串匹配即可。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i,x,y) for(int i=x;i<=y;i++)原创 2015-02-03 11:49:15 · 603 阅读 · 0 评论 -
POJ 2185 Milking Grid(KMP)
解题思路:算是一个多维的KMP,其实是一样的,不过把1个字符的比较改成一行或一列字符的比较,对行和列使用两次KMP,最后乘起来就可以了。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i,x,y原创 2015-02-03 15:34:55 · 533 阅读 · 0 评论