
KMP
文章平均质量分 78
kdqzzxxcc
这个作者很懒,什么都没留下…
展开
-
HDU 4763 拓展KMP
题意:给你一个串,问是否可以找到这样的三个串,是这个串的前缀,中间串, 后缀, 这个三个串相同,找出最长的这样的三个串。输出长度。吐槽:昨天随手KMP就水过了,发现随便一组样例都过不了,数据真水。思路:今天用拓展KMP做了一发,首先我们知道拓展KMP里面的EX数组。假设EX[i] = x 。(相对于这题,模式串和匹配串是一样的)那么代表从位置i 起 共 x 个字符组成的子串, 和从首位原创 2013-09-29 19:43:21 · 1134 阅读 · 0 评论 -
HDU 3336 KMP_NEXT
题意:一个字符串,长度是n,那么他一共有n个前缀,现在问,这个前缀在原串中有多少个,将所有的和加起来取模。例如:abab那么他的前缀有a , ab ,aba , abab。对应的在原串中的个数为a有2个,ab有2个,aba有1个,abab有1个。那么总数是6。思路:对这个字符串求出Next数组,那么对于每个Next[i] = k ,那么我们就知道前缀0 -> k - 1处有一个原创 2013-10-02 21:34:05 · 915 阅读 · 0 评论 -
HDU 3746 KMP_Next 找循环节
题意:给你一个字符串,使添加最少的字符,使得这个字符串由一个循环节循环构成。思路:这道题和POJ 1961差不多,POJ 1961:http://blog.youkuaiyun.com/just_water/article/details/12169609也是找循环节,那么根据POJ 1961的结论,我们很容易推出,当字符串长度为l时,如果next[l] = k ,并且l % (l - k) == 0原创 2013-10-02 22:42:20 · 1118 阅读 · 0 评论 -
HDU 2087 KMP
题意:给出字符串a , b 求b在a中出现了多少次,不可重叠。思路:最裸的KMP。#include #include #include #include #include #include #include #include #include #include #include #include #define Max 2505#define FI first原创 2013-10-03 00:00:19 · 1091 阅读 · 0 评论 -
HDU 2594 EX_KMP或者字符串hash
题意:给你2个字符串a , b 。问 a的前缀和b的后缀的公共部分最长是多少。题意:把a从前往后hash,把b从后往前hash,如果hash值相等,那么代表两个字符串相等,那么更新长度。最后输出这个长度的最大值即可。还可以用EX_KMP搞,我们可以把两个字符串连成一个,然后根据EX_KMP的NEXT数组的作用,直接就可以判断后缀是否等于前缀。先来一发HASH的代码。#inc原创 2013-10-03 00:24:03 · 1317 阅读 · 0 评论 -
POJ 1961 KMP_next数组
题意:给你一个串,然后叫你输出,该串从1 -> i (i = 2 , 3 , 4 ……, l)这个前缀串,可以由一个字串循环多少次产生,即是一个周期串,无法形成则不输出。具体可以看样例,很好理解。思路:这道题考察的是KMP,next数组的应用,我们知道如果next[j] = k ,那么代表(j - k ,……j - 1 )位的字符与长度为k的前缀匹配。那么如果一个串是周期串的话,那么每次错原创 2013-09-29 16:57:09 · 1771 阅读 · 0 评论