博弈论板子

Bash博弈:

题意:

一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。

思路:

当N为(k+1)个时,后者必胜。无论前者怎么取,后者都能取走最后的石子

所以当N%(k+1)==0 时,不论如何最后都会出现k+1的局面,所以当N%(k+1)==0 时,后者必胜

Nim博弈:

题意:

N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。

思路:

(瞎写的)

当(0,0,0)时,为必败局

当(0,0,1)时,为必胜局 ,当(0,0,2)时,为必胜局 ,当(0,0,n)时,为必胜局

当(0,1,1)时,为必败局 ,当(0,1,2)时,为必胜局 , 当(0,1,n)时,为必胜局 

当(0,2,2)时,为必败局 , 当(0,2,3)时,为必胜局 ,

当(1,1,1)时,为必胜局

根据上面推出。。。。(。。。)

所以,将所有的石子进行异或操作,当异或值为 0时 ,后者必胜 ,否者,前者必胜

威佐夫博弈:

题意:

2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。

思路:

  1. x,y的最小值 = fabs(x-y)*(sqrt(5)+1)/2.0

  2. 后手胜,否则,先手胜

题目链接(以后补.....):

51node  Bash游戏

51node Nim游戏

51node 威佐夫游戏

猜你喜欢

转载自blog.csdn.net/Rvelamen/article/details/82918694