博弈論之Nim遊戲

2022-09-10 04:21:14 字數 927 閱讀 4719

題意:給定nn堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子(可以拿完,但不能不拿),最後無法進行操作的人視為失敗。

問如果兩人都採用最優策略,先手是否必勝。

必勝狀態,先手進行某乙個操作,留給後手是乙個必敗狀態時,對於先手來說是乙個必勝狀態。即先手可以走到某乙個必敗狀態。

必敗狀態,先手無論如何操作,留給後手都是乙個必勝狀態時,對於先手來說是乙個必敗狀態。即先手走不到任何乙個必敗狀態。

我們要做到先手必勝,我們將數量最多的那一堆取走一部分使得它跟其中一堆相平,這樣對手怎麼拿,我們就映象地去拿,這樣對手的結果是必然什麼都拿不了。

假設三堆石子是1,2,3,第三堆石子無論是拿走乙個還是兩個,最終結果的三個石子堆,總會有一堆的數量成單數,如1,2,1或者1,2,2或者,1,2,0

但是如果石子是3,4,我們讓數量為4的取走1個,這樣就是3,3,無論對手取多少,我們映象地取,對手總會沒有東西可取,這樣就是我們的必勝狀態

要運用到異或,只要有石子對數是偶數對,異或結果就是0,就是必敗,反之,必勝。異或可以看這裡傳送門

code

#include #include #include using namespace std;

const int n = 1e5 + 10;

int a[n];

int main()

if (!res) cout << "no" << endl;

else cout << "yes" << endl;

return 0;

}

博弈論之Nim遊戲

二 nim遊戲的定義 三 過程例項 四 分析 3.bouton s theorem 五 例題 nim遊戲是博弈論中最經典的模型 之一 它又有著十分簡單的規則和無比優美的結論 nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinator...

博弈論 Nim遊戲

這種遊戲稱為nim博弈,遊戲過程中面臨的狀態成為局面。n im nimni m博弈不存在平局,只有先手必勝和先手必敗兩種情況。定理nim 博弈先手 必勝,當 且僅當a 1xora2 xor xoran 0nim博弈先手必勝,當且僅當 a 1 texta 2 text cdots text a n n...

博弈論演算法之nim遊戲

有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿走一樣多的物品,最後都將導致 0,...