算法-kmp
FawkesLi
这个作者很懒,什么都没留下…
展开
-
ch 1809 kmp中f数组的应用
思路: 搞了一天了,好累啊。 就是kmp里面f[i]数组表示的是 :a串以i为结尾的字串,与b串的前缀的最大匹配长度。所以对于题上说的某些前缀,你不用管是那个前缀,你只需要知道前缀的匹配长度就行了啊,所以for (int i = 1; i <= n; i++) cnt[f[i]]++; 不过有可能f[i]既可以匹配5位字符,又可以匹配3位字符,那么你就应该都算上去啊,所以cnt[i]数组应该保存的是匹配长度大于等于i的有多少种情况,但是你刚刚少算了一些情况的嘛,所以for (int i = n; i.原创 2020-06-16 23:27:39 · 393 阅读 · 0 评论 -
poj 2185 二维kmp
题意:求最小的模式块,使其无限扩展后包含给你的矩阵块(看别人题解才懂的题意); 分析:假设存在一个模式块可以满足上述条件,那么必然存在一个起点在(0,0)的模式块满足上述条件; 对于每一行,我们找出所有可以满足条件的前缀记录下长度,那么满足所有行的最短的长度就是该模式块的宽r; 对于模式块的长,我们把宽r的字符串压缩看出一个字符,然后再进行KMP,找出该字符串的最小循环串,即长l; 答案就是r *...原创 2020-05-08 12:57:03 · 212 阅读 · 0 评论 -
poj 3461(kmp,匹配成功的时候忘记跳next了,跳了到了0,贡献了几次wa)
#include <iostream> #include <cstdio> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #includ...原创 2019-11-05 14:40:50 · 105 阅读 · 0 评论