![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kmp
vsooda
这个作者很懒,什么都没留下…
展开
-
HDU 1711 KMP 初级
最初级的kmpnext数组有模式串计算得来。相对于朴素匹配的区别在于,主串的 i 不再后退,而只是扫描一遍过去。当发现不匹配的时候,根据next数组的找到模式串的对应位置进行比较。next的值由 最前真前缀和真后缀的最大长度决定。具体参考数据结构课本。#include #include using namespace std;void get_nextval(int* T原创 2013-01-09 21:38:57 · 515 阅读 · 0 评论 -
HDU 1686 统计子串的个数 kmp 调了半天
题意不解释了。第一版本代码:WA#include #include using namespace std;char s1[1000000+10], s2[10000+10];void get_nextval(char* T, int nextval[]){ int i = 1, j = 0; nextval[1] = 0; while(i < T[原创 2013-01-10 11:02:53 · 915 阅读 · 1 评论 -
HDU 1358 KMP运用 求某串中所有循环前缀串的长度和循环次数
解题思路:这个题其实用的是next[]数组的性质来求周期、假设前K个元素匹配成功,则有str[1]=str[i-next[i] ],str[2]=str[i-next[i]+1]······str[i]=str[next[i]]。那么我们知道从str[0]到str[next[i]]是字符串的一个循环周期,即i-next[i]为重复的长度,那么长度为K的字符串中的循环次数为i/(i-next[i原创 2013-01-25 19:39:58 · 1702 阅读 · 0 评论 -
HDU 4513 回文串Manacher算法
Manacher算法学习: http://blog.csdn.net/vsooda/article/details/8725580代码1:转自http://blog.csdn.net/sprintfwater/article/details/8709458#include #include #include #define MAXN 100005int a[MAXN * 2];s转载 2013-03-27 19:40:21 · 1818 阅读 · 0 评论 -
Manacher算法--O(n)回文子串算法
这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/ 其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。转载 2013-03-27 11:11:36 · 816 阅读 · 0 评论