
KMP
文章平均质量分 53
蘑菇小哲
在通往梦想的道路上奋力潜行
展开
-
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 · 724 阅读 · 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 · 508 阅读 · 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 · 931 阅读 · 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 · 730 阅读 · 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 · 835 阅读 · 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 · 575 阅读 · 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 · 445 阅读 · 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 · 642 阅读 · 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 · 570 阅读 · 0 评论