KMP
TommyTT
我擦,要挂科了。
展开
-
hdu 1358 Period
枚举长度判断是否符合周期串,用next判断#include#includeusing namespace std;#define MAXN 1000005int next[MAXN];char s[MAXN],p[MAXN];void getnext(int n) { for(int i=1;i<n;i++) { int j=n原创 2013-07-11 00:38:12 · 530 阅读 · 0 评论 -
hdu 3746 Cyclic Nacklace
题意:加一个字符串使得原串为周期串,求加的串的最小长度i%(i-next[i])==0可以表示是否为周期串next的应用。#include#includeusing namespace std;#define MAXN 100005int next[MAXN];char s[MAXN],p[MAXN];void getnext(int n){ next[0]原创 2013-07-06 11:49:00 · 584 阅读 · 0 评论 -
hdu 4468 KMP+贪心
hdu 4468 KMP+贪心原创 2013-07-22 10:56:32 · 1933 阅读 · 0 评论 -
hdu 4749 Parade Show KMP
题目意思,给你两个串,让你求出第一个串中有多少个紫串,这个子串和第二个串满足:任意一个数字在其中的相对位置都一样。 串与串不能重叠,求最多有多少个。其实就是给你一个文本串一个模式串求有多少个匹配的问题,典型的KMP,但这里所谓的“匹配”,不是指两个数字相同,而是指两个数字在期中对位置等价。由此可以想到,我们可以用一个函数,代替KMP中 s[i]!=p[i]这条语句,而这个函数,就是原创 2013-10-07 02:25:02 · 1608 阅读 · 0 评论 -
hdu 4763 Theme Section KMP
题意:找到一个最长的子串,使得原串的前缀和后缀都和这个子串相同,且3者无交叉。对原串求一次next,我们发现若顺着next[n]走下去,得到的前缀一定和原后缀匹配,这样就满足了前后相等。然后只要暴力查找中间是否出现了这个前后缀就够了。理论复杂度n^2,但是实际不会出现那种情况。#include#include#includeusing namespace std;#defi原创 2014-08-28 10:17:31 · 696 阅读 · 0 评论