
KMP算法
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
HDU5918【KMP大法好,虽然我不会】
#include using namespace std;typedef long long LL;const int MAX=1000010;int n,m;int a[MAX],b[MAX];int nextval[MAX];LL ans;void get_next(int b[],int m){ int i=0; nextval[0]=-1; int原创 2016-10-05 01:01:59 · 676 阅读 · 1 评论 -
POJ3461 【KMP(粗糙模板)】
题意:给你两个字符串p和s,求出p在s中出现的次数。这道题,abababa中aba出现了3次。有其他题是求abababa,aba就是2次。需注意。KMP 模板//#include//using namespace std;#include#include#include#include#includeusing namespace std;typedef原创 2017-02-09 00:16:37 · 394 阅读 · 0 评论 -
HDU2594 【KMP】
题意:给两个字符串s1,s2,求最长的s1前缀匹配s2后缀的字符串,以及长度思路:利用KMP看下最终匹配到了哪个位置;一个是利用常规匹配,另一个是利用next数组的跳转。#includeusing namespace std;const int N=5e4+10;int lens1,lens2,Next[N];char s1[N],s2[N];void GetNext原创 2017-02-09 15:42:15 · 597 阅读 · 0 评论 -
POJ3450【KMP理解】
题意:求多个字符串的最长公共子串思路:4000个串,200长度。一种暴力,对于一个串最多有200*200=40000级别个子串,然后我要再处理一下next数组200,8e6复杂度;然后我要和4000个串去匹配一下,看看符不符合,400000*4000*200这样就炸了;其实显然不需要所有的子串都枚举出来,可以二分来搞,因为显然如果有aaaa为最长公共字串,则aaa则一定有。原创 2017-02-09 17:55:22 · 434 阅读 · 0 评论 -
POJ2752【KMP-next数组含义】
题意:给一个字符串,求满足既是这个字符串的前缀,又是这个字符串的后缀,从小到大输出长度思路:细讲next数组含义博文:点我首先要满足前缀的呀。KMP的next数组干的是子串最长后缀。所以从最后一个next一直往前跳,next存的就是最长后缀,知道为0||-1;//#include#include#include#include#includeusing n原创 2017-02-10 19:24:23 · 573 阅读 · 0 评论 -
POJ2406【KMP-next数组】
关于next的解释原文:点点点//#include #include#include#includeusing namespace std;const int N=1e6+10;char s[N];int Next[N],len;void GetNext(){ int i=0,j=-1; Next[0]=-1;原创 2017-02-10 23:54:10 · 373 阅读 · 0 评论 -
HDU2087【KMP-next】
思路:利用next[]的转化。//#include #include#include#includeusing namespace std;const int N=1e3+10;char p[N],s[N];int lenp,lens,Next[N];void GetNext(){ int i=0,j=-1; Next[0]=-1; while(i原创 2017-02-11 00:25:10 · 363 阅读 · 0 评论 -
Codeforces Round #269 (Div. 2) A,B,C,D
CodeForces - 471A首先要有四个数相等,然后剩下两个数不同就是Bear,否则就是Elephant。#include using namespace std;typedef pair PII;int num[10];int a;int main(){ memset(num,0,sizeof(num)); for(int i=1;i<=6;i+原创 2017-02-12 22:30:15 · 374 阅读 · 0 评论 -
Codeforces Beta Round #71 C【KMP+DP】
yep.原创 2017-03-16 21:27:56 · 491 阅读 · 0 评论