随笔分类 -  博弈

摘要:描述himdd最近很想玩游戏,于是他找到acmj和他一起玩,游戏是这样的:有一堆石子,两个人轮流从其中取走一定的石子,取走最后所有石子的人为赢家,不过得遵循如下规则:1.第一次取不能取完,至少取1颗.2.从第二次开始,每个人取的石子数至少为1,至多为对手刚取的石子数的两倍。himdd事先想知道自己会不会赢,你能帮帮他吗?(每次himdd先手)输入有多组测试数据,每组有一个整数n(2<=n<2^64);输出himdd会赢输出Yes,否则输出No;样例输入256样例输出NoNoYes 1 2 #include<stdio.h> 3 #include<stdlib.h& 阅读全文
posted @ 2013-05-25 10:53 萧凡客 阅读(259) 评论(0) 推荐(0) 编辑
摘要:描述小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。游戏规则如下:共有N堆石子,已知每堆中石子的数量,并且规定好每堆石子最多可以取的石子数(最少取1颗)。两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),并且取的石子数量不能多于该堆石子规定好的最多取子数,等哪个人无法取子时就表示此人输掉了游戏。假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量和每堆石子规定的单次取子上限,请判断出小王能否获胜。输入第一行是一个整数T表示测试数据的组数(T<100)每组测试数据的第一行是一个整数N(1<N<100),表示共有N堆 阅读全文
posted @ 2013-05-25 10:06 萧凡客 阅读(342) 评论(0) 推荐(0) 编辑
摘要:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,……,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。我们可以知道,后面的奇异局势可以通过一轮特殊的取法变为更低的奇异局势!可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k,奇异 阅读全文
posted @ 2013-05-25 09:49 萧凡客 阅读(306) 评论(0) 推荐(0) 编辑
摘要:取石子(一)时间限制:3000ms | 内存限制:65535KB难度:2描述一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利。我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么?输入第一行是一个正整数n表示有n组测试数据输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。输出对于每组数据,输出一行 阅读全文
posted @ 2013-05-24 18:25 萧凡客 阅读(147) 评论(0) 推荐(0) 编辑
摘要:方法步骤1: 将所有终结位置标记为必败点(P点);步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点) ;步骤4: 如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个。 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,... 阅读全文
posted @ 2013-05-24 18:13 萧凡客 阅读(561) 评论(0) 推荐(0) 编辑
摘要:尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变为(0,n,n)的情形。 计算机算法里面有一种叫做按位模2加,也叫做异或的运算,我们用符号(+)表示这种运算。这种运算和一般加法不同的一点是1+1=0。先看(1,.. 阅读全文
posted @ 2013-05-24 18:06 萧凡客 阅读(168) 评论(0) 推荐(0) 编辑