
【算法】KMP
文章平均质量分 65
mysterynoip
蒟蒻OIer
展开
-
bzoj 3670 [Noi2014]动物园 KMP
题面 题目传送门 解法 感觉自己以前从来没学过KMP……不知道学得什么东西 既然题目里面已经明确要求使用KMP了,那就KMP了 设cnt[i]cnt[i]cnt[i]表示字符串以iii结尾的前缀中前缀等于后缀的字符串个数(包括自己) 可以发现,cntcntcnt可以在求解nxtnxtnxt的时候计算出来,即cnt[i]=cnt[nxt[i]]+1cnt[i]=cnt[nxt[i]]+...原创 2018-08-26 15:58:37 · 132 阅读 · 0 评论 -
bzoj 1355 [Baltic2009]Radio Transmission KMP
题面 题目传送门 解法 KMP算法的经典应用 因为最终的循环节不一定是长度的约数,如果一定是,那么我们可以枚举然后字符串哈希,这个复杂度是O(n)O(n)O(n)的 考虑一下KMP算法中nxtnxtnxt数组的定义,即为最长的前缀=后缀的长度(不包括自己)。可以发现,如果存在循环节AAA,那么类似于AA…ABAA…ABAA…AB形式的后缀一定能由一个长度和它相同的前缀来表示 所以,显...原创 2018-08-26 18:31:50 · 161 阅读 · 0 评论 -
bzoj 4698 Sdoi2008 Sandy的卡片 KMP/后缀数组
题面 题目传送门 解法 KMP大法吼啊 后缀数组当然也能做,待更 根据题意,两个字符串相等当且仅当长度相同并且一个字符串中所有数+xxx=另一个串中对应的数 那么,我们可以发现,这两个串相同一定满足这两个串的差分数组相同 所以,我们可以将原来的nnn个字符串变成nnn个长度为原来长度-1的新字符串 现在,问题就转化成要求这nnn个串的最长公共子串 不妨枚举第一个串的起点,将它对应的...原创 2018-08-26 19:42:58 · 172 阅读 · 0 评论 -
bzoj 1009 [HNOI2008]GT考试 矩阵乘法+KMP
题面 题目传送门 解法 用KMP的思想来转移dp,并用矩乘优化 很明显,我们可以这样设计状态:设f[i][j]f[i][j]f[i][j]表示现在已经填到第iii位,且与不吉利数字已经匹配了jjj位的方案数。最后的答案显然为∑f[n][i] (i<m)∑f[n][i] (i<m)\sum f[n][i]\ (if[i][j]f[i][j]f[i][j]...原创 2018-08-26 21:29:09 · 180 阅读 · 0 评论 -
bzoj 1535 [POI2005]Sza-Template KMP
题面 题目传送门 解法 花了好久终于把这道题弄懂了…… 可以发现,满足性质的字符串一定同时是整个串的前缀和后缀 首先考虑这样一个时间复杂度为O(n2)O(n^2)O(n2)的做法: 对原串进行KMP求出nxtnxtnxt数组,那么我们就可以一个一个枚举同时为前缀和后缀的字符串 考虑如何检验答案的合法性,找出该字符串在原串中出现的位置(这里指匹配到的最后一位),将这些位置标记一下。如果相邻标记点的...原创 2018-10-02 20:58:03 · 362 阅读 · 0 评论 -
[2018.10.17校内训练] 小报告 KMP+主席树
题面 给定一个长度为nnn的序列和一个长度为mmm的序列,问长度为nnn的序列中有多少个长度为mmm的子串离散化后的结果恰好为原先给的长度为mmm的序列,并求出出现的位置。 n,m≤105n,m≤10^5n,m≤105 解法 表示这道题yy了很久……KMP可以和主席树放在一起考察比较诡异…… 看到要求出现的位置,第一感应该是字符串哈希或者是KMP。但是发现字符串哈希并不是特别好写,所以就考虑如何...原创 2018-10-17 21:08:00 · 192 阅读 · 0 评论