摘要: 题目大意: 多组,给一个字符串,求最小循环节。 由于无法提交,所以没写代码,跟前面那些都差不多啦。 阅读全文
posted @ 2017-09-14 20:21 小可爱的小可爱 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 多组。给一个n,输入长度为n 的串,求:这个串所有存在循环节的前缀,输出前缀长度和循环次数(不重叠)。 解题思路: 从i=0开始,判断前缀是不是存在循环节,即(i+1)%(i-next[i]) 是否==0 。注:next[i]值是0或-1的忽略,说明前面不存在任何循环节。(关于循环节解释 阅读全文
posted @ 2017-09-14 20:19 小可爱的小可爱 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给一个t,接下来每个t,给一个串,求出最小循环节下还要增加多少个珠子才完美。(要是都没啥循环节,就输出长度) 解题思路: 求出最小循环节 cir:cir=len - next[len] (关于为什么是这个式子详见《KMP 专题知识》),然后拿len%cir得到的余数就是已经有的,那么拿循 阅读全文
posted @ 2017-09-14 20:09 小可爱的小可爱 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 求不重叠的匹配次数。 参考代码: 1 #include <iostream> 2 #include <vector> 3 #include <map> 4 #include <string> 5 #include <queue> 6 #include <stack> 7 #include 阅读全文
posted @ 2017-09-14 20:01 小可爱的小可爱 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给一个t,接下来每个t两个串,求能匹配的次数。 解题思路: 修改模板kmp,不要j==len就结束while,而是在i==len才结束,由于这里是可重叠的匹配,所以 j==len时,j=next[j],ans++。 参考代码: 1 #include <iostream> 2 #inclu 阅读全文
posted @ 2017-09-14 19:59 小可爱的小可爱 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题意: 反正就是给出一个T,然后每个T:一个n,一个m,表示主串的数字数量和模式串的数字数量,求第一个匹配的位置。 思路: KMP模板套套就好啦。 参考代码: 1 #include <iostream> 2 #include <vector> 3 #include <map> 4 #include 阅读全文
posted @ 2017-09-14 19:56 小可爱的小可爱 阅读(124) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/zhangtianq/p/5839909.html 这个博客主要是理解KMP(字符串普通匹配) 普通next: 1 ///这里还是不要用next命名数组啦 2 3 void findnext() 4 { 5 memset(nextt,0,sizeof(n 阅读全文
posted @ 2017-09-14 19:48 小可爱的小可爱 阅读(189) 评论(0) 推荐(0) 编辑