
kmp&extend-kmp
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
hud 4300 扩展kmp
题目大意:多组数据 第一行是一个含有26个字母的字符串,即翻译表,表示字母表(a、b、c……)中第i个字母对应的密文是s1[i] 第二行是一个另一个字符串s3,前面为密文后面为明文,密文一定是完整的, 明文可能不完整或没有 输出完整的密文和完整的明文那么我们就把s3全部当做密文,根据翻译表s1全部翻原创 2016-12-26 10:28:49 · 321 阅读 · 0 评论 -
poj 2185 kmp
题意:给你一个二维的字符矩阵,找到一个最小的子矩阵使得多次复制以后可以得到原矩阵(不要求整除)一开始我naive的觉得最小子矩阵的宽x就是每一行的最小循环节取个最大值,然后再把每行前x个字符组成的字符串看做一个整体,跑kmp出最小的矩阵长y然后随便来一个串就会知道,如果前l位是最小循环节,但是前(l+x)位不一定是一个循环节,所以每行最小循环节取最大值是naive的错误后来感觉取最大不原创 2017-02-20 12:01:41 · 272 阅读 · 0 评论 -
bzoj 1355 kmp
题意:给一个字符串,求最小循环节(可以不整除)裸kmp,next数组的性质 i % ( i - next[i] ) == 0 && next[i] != 0 , 则说明字符串循环,而且循环节长度为: i - next[i]循环次数为: i / ( i - next[i] )因为不要求整除所以ans=n-next[n]var n原创 2017-02-17 20:12:40 · 651 阅读 · 0 评论 -
bzoj 3670 kmp
题意:定义num[i]表示:对字符串S的前i个字符组成的子串,既是它的前缀又是它的后缀且该前缀与后缀不重叠,满足条件的字符串的数量记做num[i],ans等于(num[i]+1)的累乘,对1000000007 取模一看就是kmp..再一看数据范围必须O(n)...所以一开始naive的对每个i都递归一下i=next[i]是妥妥的TLE的 QAQ令 num[i]表示既是i前缀又是i后缀的原创 2017-02-22 11:10:53 · 475 阅读 · 0 评论 -
bzoj 3924 模拟+kmp
题意:给定两个字符串A、B,从前往后枚举A的每一个字符往另个串U里添加,若U的后缀的B则删除该后缀然后继续,保证最终答案不为空先对串B跑一遍kmp,然后对A串按照题意模拟,用kmp加速这个过程(注意对串A的每一个位置存一下最后匹配到的位置,因为会删除一个后缀所以匹配的指针不能不管)var s1,s2,ss :ansistring; i原创 2017-02-22 19:23:28 · 384 阅读 · 0 评论