symons

___________每一天都是幸福的!!

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理

2013年1月7日

摘要: 转自:http://blog.csdn.net/acm_cxlove/article/details/7835016----------------------------------------------------------------------------------------------------------------------------------------------------引用:http://blog.csdn.net/dgq8211/article/details/7602807有一堆个数为n的石子,游戏双方轮流取石子,满足:1)先手不能在第一次把所有的石 阅读全文
posted @ 2013-01-07 18:18 symons 阅读(180) 评论(0) 推荐(0)

摘要: 这个题目好玩,知道推算方法了以后,刚做完之前那个题,然后我就果断打表!MLE!然后我就输出了20*20的情况找找规律吧,我发现当n,m中只要有一个为偶数的时候先手就会赢。下面附上2段代码。0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 //这个是打表出来的20*20的值。n是行号,m是列号。1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 ... 阅读全文
posted @ 2013-01-07 16:23 symons 阅读(156) 评论(0) 推荐(0)

摘要: 这题范围是1-1000,可以用打表法写出来,满足2^n<=1000这个条件的n的取值是[0,9]。 就简单了,只要在i-2^n的记录中找到必败点那么就可以认定i点是必胜点。 然后打表输出就可以了。 1 #include <stdio.h> 2 bool num[1000+10]; 3 int main() 4 { 5 int n,i,j; 6 num[0]=num[1]=1;//1代表赢 0代表输 (针对先手来说) 7 int POWa[11]={0,1,2,4,8,16,32,64,128,256,512}; 8 for(i=2;i<=1000;++i) ... 阅读全文
posted @ 2013-01-07 15:44 symons 阅读(158) 评论(0) 推荐(0)

摘要: 这个题看了一上午,一直没头绪,撞了东南西北墙,终于在中午看了解题报告。恍然大悟! 这个题的意思是这样的,只能从较大数中取较小数的倍数。到最后谁不能拿了,就视为失败。 我开始想找到一个数字的规律来解题,后来发现不行,接着又想尝试递归来模拟拿的步骤来写,又被自己否定了,终于看了解题报告。恍然大雾,明白了决策与影响控制对手的节奏。如果a/b>=2,则有两种选择来控制对手的行动,1种是将状态变为{a>b&&a/b=1}另一种是{a<b}。这样对手在两种情况下均只能有一种选择,而结果也只有两种,所以具有选择权的就会控制比赛结果。 也许大家在担心,是不是这下控制住了,下次 阅读全文
posted @ 2013-01-07 12:24 symons 阅读(240) 评论(0) 推荐(0)