随笔分类 -  acm-KMP

poj 2185(二维kmp)
摘要:题意:让你求一个最小的覆盖子矩阵。分析:首先第一点是确定的:那就是这个子矩阵肯定位于左上角,然后按行考虑,求出每一行可能的重复子串的长度,然后取所有行都存在并且长度最短的长度最为最小子矩阵的宽,最后按列队长度为宽的字符串进行一次kmp求出循环节的长度。代码实现:#include#include#includeusing namespace std;int n,m,windth,height;char str[10005][80];int visited[80],next[10005];void solve(){ int i,j; for(i=0;i=1;j--) ... 阅读全文

posted @ 2013-09-16 20:32 后端bug开发工程师 阅读(342) 评论(0) 推荐(0)

hdu 4333(扩展kmp)
摘要:题意:就是给你一个数字,然后把最后一个数字放到最前面去,经过几次变换后又回到原数字,问在这些数字中,比原数字小的,相等的,大的分别有多少个。比如341-->134-->413-->341,所以和原数字相比,比原数字小的有一个,相等的有一个,大的有一个。分析:经过观察,其实就是求每一位的后缀与自身的最长公共前缀,这个显然可以用扩展kmp处理,但是开始的时候我超时了,后来在网上看到别人把这个串后面再接上本身,以它为主串,然后以自身为模板串进行扩展kmp,这样处理把时间复杂度降到了线性的,最后要注意的一个问题就是如何避免重复了,我们可以用普通的kmp求出此串的最小循环节,如果构成完 阅读全文

posted @ 2013-09-13 10:08 后端bug开发工程师 阅读(1560) 评论(0) 推荐(0)

hdu 4300(kmp)
摘要:题意:说实话这个题的题意还真的挺难懂的,我开始看了好久都没看懂,后来百度了下题意才弄懂了,这题的意思就是首先有一个字母的转换表,就是输入的第一行的字符串,就是'a'转成第一个字母,'b'转成转换表的第二个字母·······然后下面一个字符串是密文+明文的形式的字符串。就是说前后两段是重复的,只不过通过转换表转换了下。而且后面一段可能不完整,让我们补完整。思路:这道题我很久之前就已经a掉了,当时是用普通的kmp做的,稍微变通下就行了。只不过现在正在学习扩展kmp,所以就用扩展kmp做了下,个人觉 阅读全文

posted @ 2013-07-13 17:31 后端bug开发工程师 阅读(1995) 评论(0) 推荐(0)

扩展kmp
摘要:扩展kmp题目:hdu 3068、hdu 4300、hdu 3613、hdu 1867、hdu 4333、hdu 4513、poj 2185http://blog.csdn.net/kg_second/article/details/8865210http://hi.baidu.com/lewutian/item/0c5e49c75a4c8154bcef6900http://www.freopen.com/?p=10432 阅读全文

posted @ 2013-07-06 10:48 后端bug开发工程师 阅读(251) 评论(0) 推荐(0)

扩展kmp
摘要:刘雅琼写的论文讲得挺好的,你们先学习下,然后再来看代码就比较简单了!!#include#includeint next[1000],extend[1000];char S[1000],T[1000];void get_next(){ int a,p,k,j,len; int L; len=strlen(T); next[0]=len; a=0; while(a=p) { j=p-k+1>0?p-k+1:0; while(j+ktlen?tlen:slen; a=0; while(a=p) ... 阅读全文

posted @ 2013-06-30 11:19 后端bug开发工程师 阅读(373) 评论(0) 推荐(0)

hdu 3746(KMP的循环节问题)
摘要:题意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。例子:abcabc 已经循环2次,添加数为0abcac 没有循环2次,添加字符abcac。数目为5.abcabcab 已经循环过2次,但第三次不完整,需要添加数为1.分析:就是一个简单的KMP循环节问题,但我只能说杭电的数据太水了,一开始我写的一个明显有BUG的代码也能够AC,算了不说了!!代码实现:#include<iostream>#include<cstring>using namespace std;char a[100001];int next[100001];int main(){ i 阅读全文

posted @ 2013-04-14 10:48 后端bug开发工程师 阅读(800) 评论(0) 推荐(0)

导航