PKU1067 取石子游戏

来源:互联网 发布:淘宝好评返现被投诉 编辑:程序博客网 时间:2024/05/16 01:16

其实就是:

威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10).可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk=ak+k.

    那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:

    a[k] =trunc(k(1+√5)/2),b[k]= a[k] + k  (k=0,1,2,...,n )

所以只要用 b[k]-a[k] 求出k, 再验证k是否满足 a[k] =trunc(k(1+√5)/2)就可以了

 

另外

巴什博弈(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

很容易想到当n%(m+1)<>0时,先取必胜,第一次先拿走n%(m+1),以后每个回合到保持两人拿走的物品总和为m+1即可。

 

尼姆博弈(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

对于任何奇异局势(a,b,c),都有a xor b xor c=0.

非奇异局势(a,b,c)(a<b<c)转换为奇异局势,只需将c变为a xor b,即从c中减去 c-(a xor b)即可。


原创粉丝点击