
KMP
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 3461 KMP
一道裸的KMP这里就放个模板吧。。。。以后KMP就这么写了// by SiriusRen#include <cstdio>#include <cstring>using namespace std;int alen,cases,blen,next[10500],ans;char a[10500],b[1000500];void get_next(){ int j=0;next[1原创 2016-07-17 12:49:20 · 406 阅读 · 0 评论 -
NOI 2014 动物园
经过上午的学习,终于对KMP有了初步的了解 这里就是在get_sum的时候进行了一下小小的变形。 (听说要写快速乘,网上copy了一份。 留着以后用吧)http://uoj.ac/problem/5 UOJ数据挺好的,重点是可以看别人的程序(也可以hack别人的程序)#include <cstdio>#include <cstring>#include <iostream>#define原创 2016-07-17 12:58:04 · 906 阅读 · 0 评论 -
POJ 2406 KMP next数组的应用
题意:让你找最小重复串的个数加深KMP中对next数组的理解#include <cstdio>#include <cstring>using namespace std;int next[1000500],slen;char s[1000500];void get_next(){ int i=1,j=0; next[1]=0; while(i<=slen){原创 2016-07-17 13:00:39 · 685 阅读 · 0 评论 -
POJ 2752 KMP中next数组的应用
题意: 让你从小到大输出给的字符串中既是前缀又是后缀的子串的长度。 思路: 先要了解这个东西: KMP中next数组表示的含义:记录着字符串匹配过程中失配情况下可以向前多跳几个字符,它描述的也是子串的对称程度。那么我们可以用next数组来乱搞怎么个乱搞法呢? 前缀的next[len]长度的子串和后缀next[len]长度的子串完全相同 这样就是一个解了。 我们可以不断地通过next数组原创 2016-07-17 21:13:10 · 601 阅读 · 0 评论 -
BZOJ 1355 KMP中next数组的应用
思路: 我们知道 next[i]是失配的i下一步要去哪儿 next[n]就是失配的n要去哪儿 n-next[n]就是答案(即最短周期)啦//By SiriusRen#include <cstdio>using namespace std;int n,next[1000050],j;char a[1000050];int main(){ scanf("%d%s",&n,a+1原创 2016-10-31 16:10:57 · 509 阅读 · 0 评论 -
POJ 2185 正解 KMP
题意: 思路:把每一行压成一个数 求一下 KMP 把每一列压成一个数 求一下KMP 答案就是两个周期之积网上的好多题解都是错的………………………..//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,next[10005],recx;s原创 2016-10-31 20:03:39 · 402 阅读 · 0 评论 -
BZOJ 3796 后缀数组+KMP
思路: 写得我头脑发蒙,,, 旁边还有俩唱歌的 抓狂 (感谢lh大爷查错) 首先 1、w是s1的子串 2、w是s2的子串 这两步很好办啊~ 后缀数组一下O(n)就可以搞 重点是 这个:3、s3不是w的子串 怎么办呢 把 1、3做一发KMP 那么取一下min就好了 注意重叠的情况 (其实是可以O(n)搞的 我一开始写错了 改的时候偷懒就直接二分了) 也很快~//By原创 2017-02-13 11:51:15 · 831 阅读 · 0 评论