洛谷P2197 模板 nim遊戲 博弈論

2022-09-01 09:42:15 字數 1289 閱讀 6261

甲,乙兩個人玩nim取石子遊戲。

nim遊戲的規則是這樣的:地上有n堆石子,每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。ni

mnim

博弈的模板。

定理:nim

nim博弈中先手必勝,當且僅當a1x

ora2

xora

3xor

...x

oran

>0a

1​xo

ra2​

xora

3​xo

r...

xora

n​>0。

設n=a

1xor

a2xo

ra3x

or..

.xor

ann=

a1​x

ora2

​xor

a3​x

or..

.xor

an​因為ax≥

0ax​

≥0,所以顯然n≥0

n≥0首先,當所有石子全部被取完時,顯然有n=0

n=0。此時先手處於必敗態

如果n>0n

>

0,那麼設n

n二進位制下從左往右數第一位為1的是第k

k位,那麼必然有奇數堆石子的第k

k位為1,設第i

i堆石子的第k

k位為1,那麼就從i

i中取出若干石子,使得aia

i​變為aixo

rnai

​xor

n(顯然aix

ornai​x

orn​)。由於數量為奇數,那麼取完的必然是先手,此時有n=0

n=0。

通過數學歸納法可得,n=0

n=0時先手為必敗態,n

>0n

>

0時先手為必勝態。

證明過程很粗略而不嚴謹,大概是這個意思好了:):

)

#include

using

namespace std;

int t,n,ans,x;

intmain()

if(!ans)

printf

("no\n");

else

printf

("yes\n");

}return0;

}

洛谷 P2197 模板 nim遊戲 解題報告

甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子 每堆石子數量小於10000 每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。第一行乙個整...

洛谷P2197 模板 nim遊戲 博弈論

甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子,每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。n im nimni m博弈的模板。定理...

洛谷 2197 模板 nim遊戲

題目描述 甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子 每堆石子數量小於10000 每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。輸...