kmp
文章平均质量分 74
double1994
这个作者很懒,什么都没留下…
展开
-
POJ 1961 Period
kmp,与poj2406几乎一样,只是需要求出每个点是否存在循环数。#include #include#include#include#define INF 100000000using namespace std;char sub[1000001];int next[1000001];void getnext(){ int i=0; int j=-1;原创 2013-08-24 11:46:18 · 489 阅读 · 0 评论 -
POJ 3450 Corporate Identity
kmp模板题,字串直接暴搜第一个串的所有字串即可。纯暴力。需要稍微剪下枝。字串由长到短。当当前字串长度小于已记录存在的公共子序列长度时,可跳出序列。PS:同样长度按字典序小的输出。目前还是不很理解kmp原理,只是当模板用。。。#include #include#include#include#define INF 100000000using namespace std;c原创 2013-08-21 21:42:17 · 468 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame
寻找前缀与后缀相同的长度。理解next数组的意义即可。PS:一开始直接做超时,之后我是从n到2的寻找,中间不断压缩next,算是借鉴了并查集中的思想吧。(必须逆序否则压缩next后结果不对)。另当前缀长队为总长度时不满足条件,直接加上。#include#include#include#include#define INF 100000000#define MAXN 400005#d原创 2013-08-24 11:52:40 · 448 阅读 · 0 评论 -
POJ 2406 Power Strings
求最大循环次数。求出next后直接判断n%(n-next[n])==0&&next[n]>=1即可输出n/(n-next[n])。此处需要理解next数组的意义#include#include#include#include#define INF 100000000#define MAXN 1000005#define MAXS 1000005using namespace st原创 2013-08-24 11:44:09 · 408 阅读 · 0 评论 -
POJ 3461 Oulipo
kmp算是比较裸的题,一开始没想到,看完别人代码,改对了,但是不知道为什么。下面解释下解题思路,关键在于找到匹配串后怎么办,将‘\0’放入字串中,只要匹配到前一字符即可,即出现sub[j]='\0'即可,然后与‘\0’比较自然不相等,然后回到‘\0'的next处,最关键的是前面的串中不会出现与’\0'相同的字符,所以不会出错。#include#include#include#includ原创 2013-08-22 21:41:32 · 483 阅读 · 0 评论 -
POJ 1226 Substrings
简单kmp,将以第一个串的所有字串为模式串。已经做过,再做一次,复习下kmp.#include #include #include #include #include #include using namespace std;typedef long long LL;#define lson l, m, rt << 1#define rson m + 1, r, rt <<原创 2014-03-28 10:31:44 · 386 阅读 · 0 评论 -
POJ 2185 Milking Grid
利用next数组求最小重复覆盖字串长度,即x = len - next[len]。先求每行最小长度再求每行最小公倍数,纵横相乘可过。PS:以上是错误思路,仅为理解next数组。目测这篇文章是正解:http://blog.sina.com.cn/s/blog_69c3f0410100tyjl.html#include #include #include #include using原创 2014-03-28 20:00:24 · 420 阅读 · 0 评论 -
POJ 3167 Cow Patterns
kmp + 树状数组。树状数组动态更新排名。明白了方法以后,细节方面调了半天。。。想吐了。。。逗b的地方也不想改了。注意代码中注释的地方。真的要想清楚再写,不然很浪费时间。#include #include #include #include #include #include using namespace std;typedef long long LL;#define原创 2014-03-29 16:51:28 · 450 阅读 · 0 评论