ACM_KMP
文章平均质量分 79
Gatevin
这个作者很懒,什么都没留下…
展开
-
POJ 2406 Power Strings KMP 或 后缀数组
题目大意:就是给出一个串S 长度不超过10^6, 求最大周期使得S = a^n也就是S是有n个字符串a连接起来的,求最大的n(也就是找到最短的a即可)大致思路:首先利用KMP的next数组可以知道循环节的个数, 为n/(n - next[n]) n是S的长度, 这个感觉还是有点晕...另外一个做法是使用后缀数组KMP的做法:代码如下:Result :原创 2015-02-02 20:41:09 · 568 阅读 · 0 评论 -
POJ 1226 Substrings KMP暴力 或 后缀数组
题目大意:就是现在多组测试数据( 大致思路:首先一个简单的想法是用KMP来水过.....暴力枚举最短的那个串的所有子串判断是否满足条件即可..而且用时还很短,能水过另外一个想法是使用后缀数组, 应该算作是正解了= =两个想法各自的代码如下:KMP暴力:暴力枚举最短的那个串的所有子串进行匹配判断即可Result : Accepted Mem原创 2015-02-01 16:47:28 · 725 阅读 · 0 评论 -
UVALive 3026 (LA 3026) Period KMP求字符串周期
题目大意:白书例题给出一个长度不超过1000000的字符串S, 对于该字符串的所有前缀求其周期, 如果周期K >= 2输出起始位置是第几个字符和其周期K每一个Test case之后都要有一个空行大致思路:就是利用KMP的next数组的性质对于长度为n的字符串如果n % (n - next[n]) == 0则是周期串, 周期的部分长度为n - next[n], 周期数为原创 2015-02-11 16:02:43 · 1386 阅读 · 0 评论 -
HDU 4468 Spy KMP + 贪心 (2012成都区域赛E题)
题目大意:就是现在对于给定的一个字符串s 长度不超过10^5, s可以表示成P1 + P2 + ... + Pk + T, T是s的后缀, P1, P2,....Pk都是T的前缀, 可以没有Pi, 也就是可以S = T现在对于给定的字符串S求出最短的T的长度大致思路:这是个很巧妙的KMP的应用的题, 还要用到贪心的思想, 首先我们初始化后缀是s[0]这一个字符, 然后拿当前原创 2015-03-28 22:37:01 · 1284 阅读 · 0 评论 -
HDU 3336 Count the string 后缀数组 或 (KMP + DP)
题目大意:就是现在给出一个长度不超过20W的字符串S, 对于这个字符串求其所有前缀在串中出现次数的和, 结果对10007取模大致思路:很容易想到后缀数组, 找到sa[i] = 0的那个就是串S, 那么找出这个位置向两边能扩展到的长度即可, 就是利用一下height数组就行了, 没什么难度= =还是不清楚的话看代码细节吧代码如下:Result : Acce原创 2015-05-04 18:17:31 · 786 阅读 · 0 评论 -
HDU 4552 怪盗基德的挑战书 (KMP + DP) 或 后缀数组
题目大意:和HDU 3336简直一模一样啊.....大致思路:就是KMP + DP 或者后缀数组都可以做...细节见这个吧: HDU 3336题解一模一样不吐槽了...代码如下:Result : Accepted Memory : 2448 KB Time : 15 ms/* * Author: Gatevin * C原创 2015-05-05 10:36:15 · 579 阅读 · 0 评论 -
Codeforces 30E Tricky and Clever Password Manacher + KMP + 前缀和
题目大意:就是现在有一个长度为奇数的个回文串串T被加密成了 A + prefix + B + middle + C + suffix的形式, 其中 T = prefix + middle + suffix , 这六个部分可以是空的, 现在对于给出的加密后的串求原串T的最大可能长度, 其中middle长度也是奇数, preifx长度和suffix长度相等, 输入的字符串长度大致思路:原创 2015-03-29 12:19:55 · 2213 阅读 · 1 评论 -
URAL 1996 Cipher Message 3 FFT + KMP
题目大意:就是现在给出一幅画的存储代码为一组n个01串, 每个串的长度都是8, 现在有一串需要加密进去的01串, 长度为m个(n, m 现在可以将n个01串中的最后一个数字进行更改, 前7个01不能更改, 问是否能将这n个01串的末尾进行更改使得这个长度为m的加密消息出现在这个改动后的01串中首先注意这题只有当前7位相同时才有可能改成相同, 那么可以先只看每个01串的前7位进行原创 2015-07-16 15:52:53 · 1130 阅读 · 0 评论 -
SCU 4438 Censor (KMP)
题目大意:就是现在给出两个字符串A, B, 长度都不超过500万, 要求每次将B中第一次A的出现删除, 然后将B剩下的两段前后合并, 然后重复这个过程直到没有可以删除的A位置, 问最后剩下的串是什么大致思路:首先看这个字符串的长度不难想到用KMP处理出A的next数组然后考虑在B上进行匹配, 这里我用的是两个数组来模拟链表, 表示剩下的串, 每次发生删除时, 将当前位置的指原创 2015-10-01 20:11:19 · 5244 阅读 · 0 评论