
KMP
u010660276
这个作者很懒,什么都没留下…
展开
-
KMP求前缀周期uva1328
#include#include#includeusing namespace std;const int maxn=1000100;int next[maxn],n,ca=1;string a;void getnext() { int j=-1,i=0; next[0]=-1; while(i<n) { if(j==-1|原创 2014-02-22 22:17:39 · 636 阅读 · 0 评论 -
KMP矩阵匹配poj2185
Language:DefaultMilking GridTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 6291 Accepted: 2629DescriptionEvery morning when they are milked, th原创 2014-08-15 20:17:22 · 546 阅读 · 0 评论 -
Codeforces Round #246 (Div. 2)
C. Prime SwapsYou have an array a[1], a[2], ..., a[n], containing distinct integers from1 to n. Your task is to sort this array in increasing order with the following operation (you may need t原创 2014-06-20 17:34:36 · 532 阅读 · 0 评论 -
扩展KMP+矩阵快速幂
扩展KMP:给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](0原创 2014-06-16 13:57:37 · 516 阅读 · 0 评论 -
KMP
好久没写过KMP了,都忘了怎么写了,重写一下温习一遍。int next[maxn];string a;void getNext(){ int j=0,k=-1,len=a.size(); next[0]=-1; while(j<len) { if(k==-1||a[j]==a[k]) { j++,k+原创 2014-01-11 15:22:24 · 491 阅读 · 0 评论 -
KMP(后缀数组)uva11475
题意:给定一个串,只能在后面添加字符,使其成为一个回文串。思路:反转后求rev的next函数,然后与原串进行匹配,找到已经是回文的位置,输出#include#include#include#include#includeusing namespace std;const int maxn=100100;int next[maxn];string a,rev;void ge原创 2014-03-18 15:14:06 · 1002 阅读 · 0 评论 -
后缀数组(多个穿的最长公共子串)+KMP+poj3080
跟Life Forms很像原创 2014-07-10 22:34:28 · 633 阅读 · 0 评论 -
KMP+poj2185
找出每行的重复子串长度的各种可能情况,然后每行都有的并且是最小长度作为宽width。第二步找最小重复子矩阵的高,这个思路和网上的差不多,取每行的宽为width的前缀作为一个单位,对这0到r-1个单位求出KMP的next函数,找出最小重复子序列的单位数作为高height,最终答案为width*height。转载 2014-07-10 21:14:46 · 508 阅读 · 0 评论 -
扩展KMP模板
#includeusing namespace std;const int N = 101010;int next[N],extand[N];void getnext(char *T) // next[i]: 以第i位置开始的子串 与 T的公共前缀{ int n=strlen(T); next[0]=n; int j=0; while(j+1<n&&T[j原创 2014-06-16 14:10:56 · 542 阅读 · 0 评论 -
扩展KMP+hdu3613
题意:给个字符串S,要把S分成两段T1,T2,每个字母都有一个对应的价值,如果T1,T2是回文串,那么他们就会有一个价值,这个价值是这个串的所有字母价值之和,如果不是回文串,那么这串价值就为0。问最多能获得多少价值 对于我们只需要枚举扫描一遍extend数组,扫描到的当前位置之前为前半部分T1, 然后用根据extend数组可以判断T1是否是回文。那后半部分T2呢? 刚才是用S去匹配T,原创 2014-07-10 14:59:44 · 524 阅读 · 0 评论 -
KMP+poj3461
#include#includeusing namespace std;const int maxw=10000+10;const int maxt=1000000+10;char word[maxw];char text[maxt];int suffix[maxw];int make(){ int i,j; int num=0; int p=0,cur=原创 2014-02-22 20:59:05 · 547 阅读 · 0 评论 -
KMP求周期uva10298
题意:给出字符串,问其周期注意:len%(i-next[i])==0时代表字符串刚刚是子串的整数倍#include#include#include#include#includeusing namespace std;const int maxn=1000100;int next[maxn];string a;void getnext(){ int i=0,j=原创 2014-03-16 21:52:47 · 624 阅读 · 0 评论 -
KMP--poj1754
字符串模式匹配,wa了几次,是自己没搞清楚字符串的前缀函数与原来串的位置关系,有待进一步学习其实这个题还比较简单,写出前缀函数,然后找一下重复子串,出一下就行了,需要注意的是前缀函数中有0,避免做分母。AC代码:#include#include#includeusing namespace std;char c[1000005];int next[1000005];int ma原创 2013-08-13 22:50:55 · 799 阅读 · 0 评论 -
扩展KMP+hdu4300
题意:首先给一个字母转化表,然后给一个密文+明文原创 2014-07-10 09:41:19 · 497 阅读 · 0 评论 -
扩展KMP+KMP+hdu4333
自己就是想不到,之上适应萨哈原创 2014-07-10 11:18:26 · 523 阅读 · 0 评论 -
KMP||扩展KMP(Codeforces 535D - Tavas and Malekas )
D. Tavas and MalekasTavas is a strange creature. Usually "zzz" comes out of people's mouth while sleeping, but strings of length n comes out from Tavas' mouth instead.Today Tavas fell原创 2015-04-22 13:28:12 · 1089 阅读 · 0 评论