巴什博弈(Bash Game)
题意:n 个石子,两人轮流取,可以自己挑选 1 到 m 个,谁取完最后一堆谁获胜.
结论:
n%(m+1)==0 先手必败,否则必胜
尼姆博弈论(Nimm Game)
题意:n 堆石子,每堆石子有a[i]个,每人轮流取,每次取某堆石子至少一个,最后取完者胜。
结论
a1⨁a2⨁....⨁an不为0,则先手必胜,反之先手必败
证明
在此贴上大佬的博客
https://blog.csdn.net/k_koris/article/details/81743806
延伸
三堆石子a,b,c 且 a>b>c;
如果a ^ b ^ c不为0,则当前人必胜,令a=b ^ c;
则实现转移
威佐夫博奕(Wythoff Game)
题意:有两堆石子,有两种取法:
1.从一堆石子取走任意多颗(>=1)
2.从两堆石子取走相同的任意多颗(>=2)
最后取完者胜
结论
ak=⌊2k∗(1+5)⌋,bk=ak+k(k=0,1,2,…,n方括号表示向下取整)
若满足上述状态,必败,反之必胜
延伸
若当前状态为 (a,b),b>=a,求状态转移方法
若当前转态已经是必败态,就不需要转移了当前状态
转移方法
后一状态
条件
(x,y)→⎩⎪⎪⎨⎪⎪⎧y拿y−bk个石子x,y拿x−ay−x个石子x拿x−ak个石子x,y拿x−ay−x个石子(ak,bk)(ay−x,ay−x+y−x)(ak,bk)(ay−x,ay−x+y−x)x=ak,y>bkx=ak,x<bkx>ak,y=bkx<ak,y=bk
斐波那契博弈(Fibonacci Nim Game)
有一个堆n个石子(n>=2),第一个人可以取任意多个,但是不得一次性把所有石子取完,后一个取的石子数量不得超过第一个人的两倍,最后取完者胜/
结论
若n不是斐波那契数列的某一项,则必胜,反之必败
延伸
若n不是斐波那契数列的某一项,根据某一定理:当一个数不是Fibonacci数时,这个数必然等于若干个Fibonacci数之和,并且这些Fibonacci数在Fibonacci数列中都不相邻。
设 n=f(an)+...+f(a2)+f(a1)
先手拿最小的斐波那契数 f(a1),但是因为f(a2)>2∗f(a1)
则后手不能一次性将f(a_{2})拿光,因此先手必胜,策略如上
Sprague-Grundy定理(SG定理)
没找到相应的博客,就按照我自己的理解来吧。
类似动态规划,sg[i]表示当前状态,若在最优情况下,每个人都想要自己获胜,只要存在一个sg[j]状态,使得
sg[j]必败且 i→j,这个代表着存在在一种方案,使得当前当前状态转移到一个必败状态。若存在这样方案,则sg[i]必胜,反之必败.
题目
POJ:
取石子游戏
Matches Game
Nim
A multiplication game
A Funny Game
A Chess Game
S-Nim
Georgia and Bob
A New Stone Game
Nim
John
Euclid’s Game
Christmas Game
HDU:
取石子游戏
取石子游戏
John
Stone Game II
Parallel Expectations
find the nearest station
Catching Fish
Digital Deletions
A Multiplication Game
A Chess Game
Euclid’s Game
S-Nim
Play a game
Stone Game
Northcott Game
Brave Game
Good Luck in CET-4 Everybody!
Fibonacci again and again
Rabbit and Grass
Being a Good Boy in Spring Festival
kiki’s game
Public Sale
取(m堆)石子游戏
取(2堆)石子游戏
悼念512汶川大地震遇难同胞——选拔志愿者
ZJU:
ZJU 3057 beans game