
KMP & 扩展KMP
jijijix
这个作者很懒,什么都没留下…
展开
-
hdu3746Cyclic Nacklace 扩展KMP
/* 题目描述:对于一个字符串s,如果将s的左右相连成一个圈后,这个圈是由相同的多个字符片段构成,那么这个串称为 “迷人串”,问在s的一端最少加上多少个字符,可以使s成为“迷人串”。 思路:借助扩展KMP中的next数组(代码中为f数组),len表示s的长度,f[i]表示s[i......(len-1)]与s[0......(len-1)]匹原创 2016-08-27 17:24:31 · 442 阅读 · 0 评论 -
hdu1711 number sequence KMP
/* 题意描述:给出数列a和数列b,问数列a中是否存在与数列b匹配的子列 方法:KMP算法的应用 */ #pragma warning(disable:4786) #pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include #inclu原创 2016-08-19 12:49:47 · 313 阅读 · 0 评论 -
hdu2087 剪花布条 KMP
/* 题目描述:给出字符串T和字符串P ,问字符串T中可以“剪裁”出多少个字符串P,比如aaaaaa中可以“剪裁” 下的aa的数量是3 方法:本题考查了对于KMP算法中失配数组的理解,如果想要完全从上一个匹配的字段中“摆脱”出来,使其 与下一个的字段没有重叠的部分,只需要使最后一个匹配点失配后转移到原创 2016-08-19 16:18:20 · 317 阅读 · 0 评论 -
hdu2203 亲和串
/* 题目描述:给出两个字符串s1 、 s2 , 问s1经过循环之后(如AABCD经过循环可以变成ABCDA,BCDAA,CDAAB,DAABC), 能否使s2包含在s1之中? 思路:如果s2的长度大于s1的长度,直接输出no,否则将两个s1拼起来,比如AABCD拼成AABCDAABCD,那么循环能 形成的全部字符串都包含在了拼接后的原创 2016-10-02 11:15:02 · 319 阅读 · 0 评论 -
codeforces 126B password KMP
/* 题目描述:给出一个字符串s,从s中找一个子串s0,使得s0是满足既是s前缀、又是s后缀,还是s的一个非前缀非后缀的 子串这三个条件的长度最长的串 思路:利用KMP,找出能匹配s前缀的最长的一段长度,其长度为ans1,注意这段匹配的结尾不能是s的最后一个字符, 否则这段匹配就成了s的一个后缀;然后再找出能匹原创 2016-10-02 17:09:08 · 489 阅读 · 0 评论 -
Counting the String 动态规划 + KMP
/* 题目描述:给出一个长度为n(0 < n < 2e6)的字符串s,问其共有多少子串与s的任一前缀相等。 思路:假设字符串下标从1 ~ n ,dp[i]表示以i结尾的字串中包含前缀的个数,f[i]表示长度为i子串前后最大公共长度。 令p = f[i] , 则dp[i] = dp[p] + 1 这样转移的原因原创 2017-02-07 16:08:10 · 412 阅读 · 0 评论