![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KMP
文章平均质量分 56
KirinSB
这个作者很懒,什么都没留下…
展开
-
HDU 4300 Clairewd’s message(扩展KMP)题解
题意:先给你一个密码本,再给你一串字符串,字符串前面是密文,后面是明文(明文可能不完成整),也就是说这个字符串由一个完整的密文和可能不完整的该密文的明文组成,要你找出最短的密文+明文。 思路:我们把字符串当做全是密文然后解密成明文,这样前面密文部分就是完整的明文,后面明文部分就乱码了,要求最短密文+明文就是求最短的密文,就是求原串和解密后的串的最大公共前缀,所以用EXMP求解。 坑爹了,前面没...原创 2018-07-18 10:56:55 · 182 阅读 · 0 评论 -
HDU 3374 String Problem(最大最小表示+KMP)题解
题意:给你一个字符串,这个字符串可以这样操作:把第一个字符放到最后一个形成一个新的字符串,记原式Rank为1,每操作一步Rank+1,问你这样操作得出的最小字典序的字符串的Rank和这样的字符串有几个,最大字典序的字符串的Rank和这样的字符串有几个。 思路:手动模拟操作复杂度O(n^2)果断超时,引入一种专门计算此情况的方法,复杂度O(n)。 这里只说最小表示: 我们先拿两个指针i,j,分...原创 2018-07-18 15:36:27 · 162 阅读 · 0 评论 -
FZU 1901 Period II(KMP中的next)题解
题意:给你一串字符串,问你前后缀相同情况有几种,并输出后缀位置(?这里一直没看懂length是什么,但是这样理解答案也对,然后还要加上本身长度) 思路:这里好好讲讲next的用法。我们都知道next代表前后缀匹配值,现在我们以下面这个字符串为例,讲述next的用法: len = 9,next[len] = 4,所我们找到了第一个前后缀匹配串abab,next[ next[len] ] = ...原创 2018-07-18 17:47:05 · 166 阅读 · 0 评论 -
HDU 1686 Oulipo(KMP)题解
思路:KMPKMP详解代码:原创 2018-07-12 19:51:38 · 126 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace(KMP+最小循环节)题解
思路:最小循环节的解释在这里,有人证明了那么就很好计算了之前对KMP了解不是很深啊,就很容易做错,特别是对fail的理解代码:#include<iostream> #include<algorithm> const int N = 1000000+5; const int INF = 0x3f3f3f3f; using namespace std; int fail[N];...原创 2018-07-13 18:50:50 · 215 阅读 · 0 评论 -
HDU 1358 Period(KMP+最小循环节)题解
思路:这里只要注意一点,就是失配值和前后缀匹配值的区别,不懂的可以看看这里,这题因为对子串也要判定,所以用前后缀匹配值,其他的按照最小循环节做代码:#include<iostream> #include<algorithm> const int N = 1000000+5; const int INF = 0x3f3f3f3f; using namespace std; i...原创 2018-07-14 10:13:37 · 257 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame(KMP中next的理解)题解
题意:要求你给出每个前后缀相同的串的长度,比如: "alala"的前缀分别为{"a", "al", "ala", "alal", "alala"}, 后缀分别为{"a", "la", "ala", "lala", "alala"}. 其中有{"a", "ala&原创 2018-07-14 11:48:53 · 168 阅读 · 0 评论