Shirlies
宁静专注认真的程序媛~
摘要: sg值但是这一题要注意一点,就是N值大于等于M值时考虑。View Code 1 #include <cstdio> 2 #include <cstring> 3 4 int sg[1101]; 5 int mex[1101]; 6 int m,n; 7 8 void get_sg() 9 {10 int i,j;11 sg[0] = 0;12 for(i = 1;i <1101;i ++)13 {14 memset(mex,0,sizeof(mex));15 for(j = 1;j <=n ;j ++)16 ... 阅读全文
posted @ 2012-03-09 21:25 Shirlies 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 求sg值就行了View Code 1 #include <cstdio> 2 #include <cstring> 3 4 int fib[1000]; 5 int sg[1100]; 6 int mex[1000]; 7 int num_fib; 8 9 void cal_fib()10 {11 fib[0] = 1;12 fib[1] = 1;13 int i;14 for(i = 2;i < 1000;i ++)15 {16 fib[i] = fib[i-1] + fib[i-2];17 if(fib[i] >... 阅读全文
posted @ 2012-03-09 20:55 Shirlies 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 这一题是与并查集删除节点有关的,我想不出来怎么做,看了别人的解题思路,也依葫芦画瓢写了份代码,代码就没有必要贴了,说说自己看了别人解题思路后自己的理解吧。这一题是要求我们删除集合中的数并另外占一个集合,大家的思路基本上都是:用虚拟节点做父节点(之前的并查集,我们都是用自己做自己的父节点),我们修改的也只是与一个数关联的父节点。说是这样说,但是方法要想出来还是要费一番周折的。提供两种链接代码http://www.cppblog.com/MiYu/archive/2010/08/26/124771.htmlhttp://www.cnblogs.com/fornever/archive/2011/1 阅读全文
posted @ 2012-03-09 15:15 Shirlies 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 这是一道关于博弈的题目,这一题挺不错的,如果知道了nim游戏异或的道理,这一题是比较好写的。Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异 或(xor)运算。•对于某个局面(a1,a2,...,an),若a1^a2^...^an==k(k>0)•一定存在某个合法的移动,将ai改变成ai'后满足 a1^a2^...^ai'^...^an=0•一定存在某个ai,它的二进制表示在k的最高位上是1 (ai^k<ai 成立)•将ai改变成ai'=ai^k a1^a2^...^ai'^.. 阅读全文
posted @ 2012-03-09 09:36 Shirlies 阅读(948) 评论(2) 推荐(0) 编辑