本文在混沌 的部落格 題解 p2252 【取石子遊戲】的基礎上創作
a和b一塊報數,每人每次報最少1個,最多報4個,看誰先報到30。這應該是最古老的關於巴什博奕的遊戲了吧。
其實如果知道原理,這遊戲一點運氣成分都沒有,只和先手後手有關,比如第一次報數,a報k個數,那麼b報5-k個數,那麼b報數之後問題就變為,a和b一塊報數,看誰先報到25了,進而變為20,15,10,5,當到5的時候,不管a怎麼報數,最後乙個數肯定是b報的,可以看出,作為後手的b在個遊戲中是不會輸的。
那麼如果我們要報n個數,每次最少報乙個,最多報m個,我們可以找到這麼乙個整數k和r,使\(n=k\times (m+1)+r\),代入上面的例子我們就可以知道,如果\(r=0\),那麼先手必敗;否則,先手必勝。
有兩堆各若干的物品,兩人輪流從其中一堆取至少一件物品,至多不限,或從兩堆中同時取相同件物品,規定最後取完者勝利。
直接說結論了,若兩堆物品的初始值為\((x,y)\),且\(x
先手當且僅滿足下面的公式時必敗
\[(y-x)\times \frac+1}=x
\]注意!判斷式需向下取整,可以通過強制轉化實現,如下:
if(int((b-a)*(sqrt(5)+1)*1.0/2)==a)
模板題:洛谷 p2252 取石子遊戲
尼姆博弈指的是這樣乙個博弈遊戲:有任意堆物品,每堆物品的個數是任意的,雙方輪流從中取物品,每一次只能從一堆物品中取部分或全部物品,最少取一件,取到最後一件物品的人獲勝。
結論就是:把每堆物品數全部異或起來,如果得到的值為0,那麼先手必敗,否則先手必勝。
模板題:洛谷 p2197 nim遊戲
有一堆物品,兩人輪流取物品,先手最少取乙個,至多無上限,但不能把物品取完,之後每次取的物品數不能超過上一次取的物品數的二倍且至少為一件,取走最後一件物品的人獲勝。
結論是:先手勝當且僅當n不是斐波那契數(n為物品總數)
博弈論總結
nim遊戲,不能操作者勝。先手必勝當且僅當 1.所有石子都為1,且有偶數堆。2.至少一堆數量大於1,sg函式異或不為0 那麼對於所有的anti sg遊戲,先手必勝當且僅當 1.sg函式異或為0且不存在sg 1 2.sg函式異或不為0且至少有乙個sg 1 每一輪裡要操作所有能操作的子遊戲。nim遊戲每...
ACM博弈論總結
常用的4個博弈論演算法 巴什博奕,威佐夫博奕,尼姆博奕,斐波那契博弈 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如...
博弈論入門總結
1 巴什博弈 hdu 1846 題目大意 有一堆石子一共有n個,兩人輪流進行取石子,每走一步可以取走1 m個石子,最先取光石子的一方為勝 如果遊戲的雙方使用的都是最優策略,請輸出哪個人能贏。input 輸入資料首先包含乙個正整數c c 100 表示有c組測試資料。每組測試資料佔一行,包含兩個整數n和...