
KMP
文章平均质量分 84
cillyb
这个作者很懒,什么都没留下…
展开
-
KMP算法总结
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]KMP算法 一BF算法简介二KMP算法1next数组KMP匹配过程时间复杂度分析搞ACM也有三年了,期间学习了不少算法,到12月把上海站打完也要成退役狗了。最近突然想把学过的一些算法回过头来好好总结一下,于是就有了我的算法总结系列。这是这个系列的开端转载 2016-05-30 21:07:36 · 690 阅读 · 0 评论 -
poj 2406 Power Strings(kmp next数组的应用)
分析转自:http://www.cnblogs.com/zhanzhao/p/4761477.html大意:给出一个字符串 问它最多由多少相同的字串组成 如 abababab由4个ab组成 分析:kmp中的next数组求最小循环节的应用例如 ababab next[6] = 4; 即 ababab ababab原创 2016-10-08 14:27:20 · 636 阅读 · 0 评论 -
hdoj 5918 Sequence I(kmp, 暴力?)
题目地址:点击打开链接题意:有两个序列,a1~an与b1~bm。 给出p,问在a1~an中有几个q能满足 b1==aq, b2==bq+p,b3==bq+2p . . . bm==aq+(m-1)p思路:用了最朴素的暴力。。。从后往前找,找到和bm相同的开始匹配,看看是不是匹配上。。。这样应该是n^2复杂度吧。我想应该会TLE,结果过了。。别人写原创 2016-12-02 22:41:29 · 626 阅读 · 0 评论 -
hdoj 2087 剪花布条(kmp)
kmp模板题,数据很弱,暴力也能过。kmp代码:#includeusing namespace std;const int maxn = 1005;char s[maxn], t[maxn];int Next[maxn], ans;void makeNext(void){ int len = strlen(s); Next[0] = Next[1] =原创 2016-10-08 13:49:43 · 514 阅读 · 0 评论 -
HDU 5763 Another Meaning (DP+KMP||后缀数组)
题意:给你两个字符串,A,B,A中每一个B字符串都有两种意思,问A总共可以有多少种意思。|A|,|B| 思路:可以想到dp[i]表示长度为i的A串的含有的方案数,那么可以得到转移方程dp[i] = dp[i-1], 如果i字符与前面的lenB-1个字符能构成B串, 那么再加上dp[i-lenB].关键是怎么判断A串第i个字符结尾是否跟B串匹配,既然字符串匹配,那就可以用原创 2017-09-04 23:08:53 · 433 阅读 · 0 评论 -
HDU 5442 Favorite Donut (最大表示法+KMP || 后缀数组)
题意:给你一个字符串,起点任意选,让你顺时针或逆时针取完得到的字符串字典序最大,如果有多种取法,优先选择起点下标小的。思路:顺时针很简单,求一下最大表示法就行;逆向的话字符串倒着存求一遍最大表示得到的是下标最大的,而题目要求是下标最小的,所以我们可以将逆串*2拼起来,然后拿求出的最大表示做下KMP标记匹配的位置,这样可以知道每个可以最大表示的位置,这样就能找到下标最小的那个了。原创 2017-09-21 23:29:23 · 456 阅读 · 0 评论 -
最小表示法/最大表示法 O(n)
循环字符串的最小表示法的问题可以这样描述:对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。由于语言能力有限,还是用实际例子来解释比较容易:设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’转载 2017-09-21 23:24:19 · 3988 阅读 · 0 评论