POJ 2975 NIM博弈的必勝策略方案數

2021-07-27 17:14:16 字數 484 閱讀 1677

題意:求解nim博弈先手必勝的方法數。

解題思路:在必勝態時,先手要做的就是拿走某堆石頭中的m個,使得xor變成0。將必敗態轉移給後手,題目就是就是問有多種使得xor變成0的方法數?

=> (ki - m) ^ (xor ki) 後面的xor ^ ki代表所有的異或值以後上ki,即等價於除了ki這堆,其他堆的異或和。

=> ki - m = xor ^ ki

=>m = ki - xor^ki

要是m > 0即是 ki > xor^ki,所原來的問題就轉換成了求ki > xor^ki的堆數。

#include 

int a[1010];

int main()

int cnt = 0;

for(int i = 1; i <= n; i++)

}printf("%d\n", cnt);

}return

0;}

POJ 2975 Nim題解 簡單的博弈論

題意 給定一種nim狀態 相當於含n堆石頭 求能有幾種方法能通過調整某一堆石頭的狀態 只准取出 使新的nim狀態為必敗態。或者說求出所給的nim遊戲狀態有多少種方法能夠贏 分析 在證明nim遊戲的sg函式的 根據這個判斷被判為n position的局面一定可以移動到某個p position 命題時,...

nim遊戲的必勝策略

假設有n堆石子,每堆石子的個數分別如下 a1,a2,a3,an 定義nim sum為a1 a2 a3.an 可以證明 1.若a1 a2 a3.an 0 則經過一次合法的移動之後必定可變成 a1 a2.an 0 此時留下的局面為必勝。2.若a1 a2 a3.an 0 則經過一次合法的移動,局面必定成為...

博弈專題 nim博弈 必勝第一步方案數

題目大意 二人小遊戲 桌子上有m堆撲克牌 每堆牌的數量分別為ni i 1 m 兩人輪流進行 每走一步可以任意選擇一堆並取走其中的任意張牌 桌子上的撲克全部取光,則遊戲結束 最後一次取牌的人為勝者。現在我們不想研究到底先手為勝還是為負,我只想問大家 先手的人如果想贏,第一步有幾種選擇呢?思路 直接看 ...