KMP
diannaok
这个作者很懒,什么都没留下…
展开
-
POJ 2185 - Milking Grid
题目地址: http://poj.org/problem?id=2185 KMP 。 求最小覆盖子矩阵。输出子矩阵面积。 利用求最小覆盖子串的方法。 不过应注意的是,因为有多行和多列,需要计算LCM。 #includeint next[10100],n,m;char s[10010][80];int get_next_r(int x){ int i原创 2012-08-21 10:24:48 · 546 阅读 · 0 评论 -
POJ 2752 - Seek the Name, Seek the Fame
题目地址: http://poj.org/problem?id=2752 KMP。 考验对NEXT的理解。 问字符串中,含有多少种长度不同的子串,并且这个子串既是这个字符串的前缀,同时也是这个字符串的后缀。依次输出这些长度。 #include#include#includeusing namespace std;const int MAXN = 1原创 2012-08-20 21:38:25 · 328 阅读 · 0 评论 -
ZOJ 3643 - Keep Deleting
题目地址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4811 KMP。 考的是前缀数组的运用,stack压栈,保存的是b中每一个元素对应a中的第几个。(即前缀长度) 时间复杂度O(n+m)。 #include#include#includeusing namespace原创 2012-09-07 18:24:20 · 716 阅读 · 0 评论 -
POJ 1961 - Period
题目地址 :http://poj.org/problem?id=1961 KMP 前缀数组 NEXT 的使用 。 和这题: http://blog.csdn.net/diannaok/article/details/7887809 一样。 #includeconst int MAXN = 1000100;int nxt[MAXN];int get_nex原创 2012-08-20 20:23:37 · 439 阅读 · 0 评论 -
POJ 2406 - Power Strings
题目地址: http://poj.org/problem?id=2406 KMP 。 NEXT 数组的扩展运用。 求字符串的最小循环节。(反过来说,就是求最小覆盖子串:len-next[len]) 我们判断 NEXT [ LEN ] 就行了,可以得到字符串是否重复出现。如果不重复出现,循环节为1。否则: 1. 如果重复出现的两部分,存在重叠,那么循环节一定原创 2012-08-20 19:31:10 · 519 阅读 · 0 评论