
kmp
zhhx2001
这个作者很懒,什么都没留下…
展开
-
poj2752(kmp的自身失配函数的利用)
给定一个字符串s,从小到大输出s中既是前缀又是后缀的子串的长度。此题非常简单,借用KMP算法的next数组,设s的长度为n,则s串本身必定满足条件。其他满足条件的子串都有个特征,就是该子串的最后一个字符肯定与s的最后一个字符相同。这正是next数组发挥作用的时候。从n - 1位既最后一位开始回滚,若s[next[n-1]] == s[n-1],则子串s[0,1,2,...,next[n-1原创 2016-07-02 14:49:43 · 551 阅读 · 0 评论 -
kmp模版poj3461
#include#include#includeusing namespace std;char a[109],b[109];int f[109];int main(){ scanf("%s%s",a,b); f[0]=f[1]=0; int m=strlen(b); for (int i=1;i<m;i++) { int j=f[i]; while (j&&b原创 2016-07-02 12:33:03 · 241 阅读 · 0 评论 -
bzoj3670 noi2014动物园(kmp)
给定一个长为L的字符串(L求Π(num[i]+1)%1000000007最开始想直接跳到第二步,不预处理,这样是不对的后来暴力求解tle了先求出来fail函数,和cnt数组即到现在的步数,再利用fail函数,一个指针j,表示当前i时和前缀合法的对应(不重叠),当i+1时,要先满足ch 【j+1】==ch【i+1】(通过不断的沿着失配指针走),并且因为不能重叠,j最多会向后移一位原创 2016-08-05 16:21:54 · 374 阅读 · 0 评论 -
bzoj1009(kmp+dp+矩阵快速幂优化)必需复习
挖个坑,这个矩阵乘法必须复习#include#include#include#include#includeusing namespace std;inline int read(){ int ans,f=1; char ch; while ((ch=getchar())'9') if (ch=='-') f=-1;ans=ch-'0'; while ((ch=getc原创 2016-08-06 12:33:55 · 316 阅读 · 0 评论 -
tyvj1068(hash水过,kmp性质)
kmp性质,对于kmp方法的思考过程,性质证明,还是没有搞明白。。。挖个坑#include#include#include#include#include#includeusing namespace std;char a[200005],b[200005];int f[200005],ans[200005],n,m,q;int main(){ scanf("%d%d%原创 2016-08-09 18:00:11 · 587 阅读 · 0 评论