循环节
文章平均质量分 60
AC_Gibson
这个作者很懒,什么都没留下…
展开
-
HDU1061 Rightmost Digit
#include #include #include using namespace std; int main() { int n2[4]={6,2,4,8}; int n3[4]={1,3,9,7}; int n4[2]={6,4}; int n7[4]={1,7,9,3}; int n8[4]={6,8,4,2};原创 2014-09-10 14:20:10 · 443 阅读 · 0 评论 -
HDU3746 Cyclic Nacklace
#include #include #include using namespace std; const int MAX=100010; char str[MAX]; int next[MAX]; void init_next() { int i=0,j=-1; int len=strlen(str); next[0]=-1; whi原创 2014-09-17 14:15:42 · 477 阅读 · 0 评论 -
HDU1358 Period KMP循环节问题
题目大意:给你一个字符串,让你求出从字符串的第2个字符开始,其长度为i的前缀中有多少个循环体大于1的循环节。 分析:KMP的next数组循环节问题。遍历字符串中的每一个位置,逐一判断即可。 字符串满足next[ i ]!=0&&i%(i-next[ i ])==0时存在循环节,且循环体大小为(i-next[ i ])。 #include #include #include us原创 2014-09-16 14:25:15 · 547 阅读 · 0 评论 -
KMP算法next数组的循环节问题
next数组在求解的过程中,用到了KMP的思想,当前失配了,就回溯到上一个next,请见 j=next[j] ,先说个结论,如果到位置 i ,如果有 i%(i-next(i))==0 , 那说明字符串开始循环了,并且循环到 i-1 结束,为什么这样呢? 我们先假设到达位置 i-1 的时候,字符串循环了(到i-1完毕),那么如果到第i个字符的时候,失配了,根据next数组的求法,我们是不是得回原创 2014-09-16 14:36:43 · 914 阅读 · 0 评论 -
POJ2406 Power Strings KMP-next数组的循环节
题目大意:给定一个字符串,让你找出该字符串的最大循环节。 分析:next数组的循环节问题。一开始我是暴力next数组的每一个值,找出其中满足循环的最大值,后来发现这样做不可行,因为对于aaaaaab这个字符串来说,他的循环节很明显为1,但aaaaaa这个子串的循环节是6,所以找出整个next数组的最大循环节就出错了。其实我们只需找出next[ len ]这一个值的循环节即可,因为这是个后原创 2015-04-23 20:52:31 · 565 阅读 · 0 评论 -
POJ2185 Milking Grid 最小覆盖子矩阵(二维KMP)
题目大意:有一个R×C规模的字符矩阵,求出最小的子矩阵,使该矩阵可以由子矩阵平移得到,输出子矩阵的大小。 分析:很明显,符合条件的子矩阵(设该矩阵的规模为w×h)需要同时满足: (1)该子矩阵的h行可以看成h个字符串,原矩阵中任一行字符串都可以由这h个字符串中的一个平铺形成; (2)该子矩阵的w列也可以看成w个字符串,原矩阵中任一列字符串也都可以由这w个字符串中的一个平铺而成;原创 2015-04-24 13:56:08 · 1009 阅读 · 1 评论 -
HDU1021 Fibonacci Again 循环节||取模
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021 题目大意:已知f[0]=7,f[1]=11,f[i]=f[i-1]+f[i-2](i>1),让你判断f[n]是否能被3整除。 分析:考虑对3取模,可以找出循环节,n的范围为10^6,也可以打表。 循环节实现代码如下: #include #include原创 2015-06-09 10:53:15 · 557 阅读 · 0 评论