![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kmp
EMber _
人但有追求,世界亦会让路。
展开
-
51nod 1277 字符串中的最大值 kmp法
复健中…题目重点在求出现的次数,这个可以用SA,SAM求,讨论区有SA的解法。相对而言kmp较为简便,只要理解kmp中next数组的定义,就能轻松解决,倒着操作累计叠加即可。需要注意的是边界问题,由于未被赋值的next数组默认为0,所以如果计数的数组从0开始就会累加过多,所以将1作为初始位置,也因此做kmp的时候记得往后多做一位。不过就算位置错了也只有三个点不过。。#include<cstdio>#include<cstring>#include<algorithm原创 2020-09-02 14:55:36 · 213 阅读 · 0 评论 -
bzoj1729 [Usaco2005 dec]Cow Patterns 牛的模式匹配 kmp+乱搞
题意:给定一个顺序序列表示奶牛的排列顺序,定义串a=b当且仅当a的每位的排名=b的每位的排名。(注意排名仅相对于当前区间)。一开始想的是一边kmp一边维护排名,但是有点复杂,然后学习了一下更为简单的一种做法。 设rank[i][j]表示前i位数字j出现的次数,那么我们在kmp的时候就可以一边跑一边看排名是否相同,具体的话,是这样: 假设kmp到当前第i位,已经匹配了j位,那么我们要求i,j排名相原创 2017-06-15 15:28:25 · 519 阅读 · 0 评论 -
bzoj3075 [Usaco2013]Necklace dp+kmp
挺好的dp题。 设f[i][j]表示走到a串的第i位,已经匹配了b串的前j位,然后kmp转移就好了。 具体看代码。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=原创 2017-05-28 18:50:23 · 381 阅读 · 0 评论 -
bzoj3620 似乎在梦中见过的样子 kmp
..这题其实挺好想的,然而我想到正解以后,觉得不能过,然后摒弃了,打了个SA调了半天才发现位置不同才算不同否则全部相同。。 而且我正解时间复杂度分析错了,,以为是N^2结果实现以后才发现随便搞一搞就能线性。。 正解就是kmp暴力,,枚举左端点然后直接kmp找出所有的A,然后看看B和A符不符合条件就行了。#include<cstdio>#include<algorithm>#include<c原创 2017-05-28 04:13:54 · 310 阅读 · 0 评论 -
bzoj1110 [POI2007]对称轴osi manacher(kmp)
题意:给一个多边形,求他的对称轴数量。 谁能独立切下这题我跪下了。。 正解是kmp(manacher),就是把多边形字符化以后找有多少个回文串。。延长一倍以后既可以用反串kmp也可以直接manacher。。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define fo(i,a,b) for(原创 2017-05-03 15:18:11 · 358 阅读 · 0 评论 -
bzoj3942
分析:..每次直接加入栈,然后用kmp来匹配就可以了。。然而我第一次kmp的时候把第二个写成第一个串WA了无数次。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;const in原创 2017-03-12 22:37:56 · 523 阅读 · 0 评论 -
bzoj3670 NOI2014 动物园 kmp
Description近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。某天,园长给动物们讲解 KMP 算法。园长:“对于一个字符串 S,它的长度为 L。我们可以在 O(L)的时间内,求出一个名为 next 的数组。有谁预习了 next 数组的含义吗?”熊猫:“对于字符原创 2017-03-02 17:27:50 · 229 阅读 · 0 评论 -
bzoj1009 [HNOI2008]GT考试
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2….Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。 他的不吉利数学A1A2…Am(0<=Ai<=9)有M位,不出现是指X1X2…Xn中没有恰好一段等于A1A2…Am. A1和X1可以为 0Input 第一行输入N,M,K.接下来一行输入M位的数。 N<=10^9,M<=20,K<=1000Output原创 2017-02-28 22:15:36 · 221 阅读 · 0 评论 -
51nod 1277 1292字符串的最大值系列
有一个字符串T。字符串S的F函数值可以如下计算:F(S) = L * S在T中出现的次数(L为字符串S的长度)。求所有T的子串S中,函数F(S)的最大值。 Input 输入字符串T, (1 <= L <= 1000000, L为T的长度),T中的所有字符均为小写英文字母。 Output 输出T的所有子串中长度与出现次数的乘积的最大值。 Input示例 aaaaaa Output示例原创 2016-12-14 20:09:30 · 284 阅读 · 0 评论 -
JZOJ 4886 字符串 KMP+DP
Description某日mhy12345在教同学们写helloworld,要求同学们用程序输出一个给定长度的字符串,然而发现有些人输出了一些“危险”的东西,所以mhy12345想知道对于任意长度n的小写字母字符串,不包含危险串的字符串个数Input多组数据,以EOF结束。对于每组数据,第一行一个数n,表示字符串的长度,第二行一个字符串str表示危险串。Output对于每组数据,输出一个整数表示答案原创 2016-11-11 20:07:34 · 408 阅读 · 0 评论