摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2147分析:我看测试数据就觉得n*m是奇数和偶数的时候进行分类就行了。没证明。网上分析:http://www.cnblogs.com/chaosheng/archive/2012/05/29/2524725.htmlP点:就是P个石子的时候,对方拿可以赢(自己输的)N点:就是N个石子的时候,自己拿可以赢现在关于P,N的求解有三个规则(1):最终态都是P(2):按照游戏规则,到达当前态的前态都是N的话,当前态是P(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N题意:在一个m*n的棋盘内,从(1 阅读全文
posted @ 2013-04-13 21:43 南下的小程序员 阅读(137) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1847分析:测试几组数据就看出来了。我自己测试的时候居然推错 了。嗨。(当然还是看出是巴什博弈)网上分析:找必败点,很容易知道当剩下3时,这是一个必败点,又每一个数减1或减2都可以成为3的倍数,意识到这点大概就会做了,因为假如这个n不是3的倍数,那么我们总可以让它减1或减2变成3的倍数,而作为3的倍数对手是不可能一次就拿完的说,这样一直下去…………………………最终先手者一定有机会把它变成3,或是后手者自杀,故意留给先手者2的k次幂,这样就也是胜利者,所以说3的倍数就是必败点,http://blog.csdn. 阅读全文
posted @ 2013-04-13 21:02 南下的小程序员 阅读(144) 评论(0) 推荐(0)
摘要: poj 终于突破200大关了,mark一下。hdu也快要300了。加油http://poj.org/problem?id=2234题意:有n堆石子,每人每次可以从一堆中拿走任意多个,两人轮流操作,谁无子可取谁输。输入n堆石子各自的数量,输出先手是否能赢。分析:NP问题,必胜态N(next player wins),必败态P(previous player wins)如果某状态的直接后继中有必败态那么它一定是必胜态,否则为必败态。SG函数。设函数g(x)。我们先把所有的最终局面(最终局面均为必败P局面)g(x)赋值为0。然后所有其他局面g(x)等于其直接后继状态中没有出现过的最小自然数。这样一来 阅读全文
posted @ 2013-04-13 20:08 南下的小程序员 阅读(171) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1564题意:给定一个N*N的方块 起始点处于一个角上 然后两个人可以轮流将棋子往没有访问过的一个方向移动 不能移动的一方就输了。分析:我直接觉得结果可以通过n的奇偶性来判断。然后就过了。其实这题我是凑巧的。证明在这里:http://blog.csdn.net/topc0o0der/article/details/5928391。还没看懂。View Code //=========================================================================== 阅读全文
posted @ 2013-04-13 20:01 南下的小程序员 阅读(213) 评论(0) 推荐(0)
摘要: 题意:给你两个数,每次可以拿大的那个数减去小的那个数的正整数倍,只要减去后得到的数是正的或者0就行,谁先得到其中一个数是0,谁就胜出。我们会发现,假设a>b,如果a/b>=2,那么后面就会出现a/b种路线,当a/b=1的时候只有一种路线,所以谁到了a/b>=2这个局面就有必胜策略,此外,当a%b==0的时候,就直接跳出来了,也是必胜点。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include < 阅读全文
posted @ 2013-04-13 18:55 南下的小程序员 阅读(144) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/exponent/articles/2141477.html(转载)Nim游戏博弈(收集完全版)Nim游戏的概述:还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。最有名的玩法,是把十二枚便士放成3、4、5三列,拿光铜板的人赢。后来,大家发现,先取的人只要在3那列里取 阅读全文
posted @ 2013-04-13 18:54 南下的小程序员 阅读(353) 评论(0) 推荐(0)
摘要: 1&a,当a是奇数的时候输出1,a为偶数的时候输出0. 阅读全文
posted @ 2013-04-13 17:42 南下的小程序员 阅读(110) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2509题意:从n堆苹果中任意一堆中 取出任意多个连续的个数.最后取光者为输。Fra先下,问是否可以获胜。和上面那题是一样的。具体详细解法看前面那篇文章。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>/ 阅读全文
posted @ 2013-04-13 14:09 南下的小程序员 阅读(102) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1907这题就相当于取火柴游戏的第二种。题意:最后取到的人为败,每次只能从一堆中取>=1的个数。看了点论文,真不知道这些人是真没想的,无线崇拜。表示:论文还没看懂。按照下面这个做的。我们提出定理里的两个限制:1、SG函数为不为0。2、有没有某单一游戏的SG函数大于1。通过这两个限制,我们可以组合出4种情况:(1)SG==0,有某单一游戏的SG>1。(2)SG!=0,有某单一游戏的SG>1。(必胜SJ)(3)SG==0,无某单一游戏的SG>1。(必胜SJ)(4)SG!=0,无某单一游戏的S 阅读全文
posted @ 2013-04-13 13:03 南下的小程序员 阅读(165) 评论(0) 推荐(0)
摘要: 尼姆游戏的变形http://blog.sina.com.cn/s/blog_a45d310e01017r4j.html首先定义一些概念:1.S态:各堆石子数的异或为零2.T态:各堆石子数的异或不为零3.石子的个数为1的堆称为孤单堆,不为零称为充裕堆4.S态下充裕堆堆数为零,称为 S0 态5.S态下充裕堆堆数为1,称为S1态6.S态下充裕堆堆数大于1,称为S2态7.T0,T1,T2态定义同理则有:必胜态:S1,S2,T1,T0必败态:S0,T2博弈资料出处:http://blog.csdn.net/acm_cxlove/article/details/7854530以下是我从网上收集的关于组合博 阅读全文
posted @ 2013-04-13 12:58 南下的小程序员 阅读(550) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2176分析: nim博弈+输出先取者第1次取子的所有方法.感想:哈哈,自己弄弄就把输出先取者第1次取子的所有方法给弄出来了。值得mark一下。比输出威佐夫博弈快多了。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time 阅读全文
posted @ 2013-04-13 09:48 南下的小程序员 阅读(127) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1850题意:输出第一步可行的方案数。分析:考察nim博弈的基本概念。提示:都在前面转载的文章里有题解。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream 阅读全文
posted @ 2013-04-13 09:07 南下的小程序员 阅读(166) 评论(0) 推荐(0)