算法-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 · 355 阅读 · 0 评论 -
poj 2185 二维kmp
题意:求最小的模式块,使其无限扩展后包含给你的矩阵块(看别人题解才懂的题意);分析:假设存在一个模式块可以满足上述条件,那么必然存在一个起点在(0,0)的模式块满足上述条件;对于每一行,我们找出所有可以满足条件的前缀记录下长度,那么满足所有行的最短的长度就是该模式块的宽r;对于模式块的长,我们把宽r的字符串压缩看出一个字符,然后再进行KMP,找出该字符串的最小循环串,即长l;答案就是r *...原创 2020-05-08 12:57:03 · 181 阅读 · 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 · 88 阅读 · 0 评论