小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。
遊戲規則如下:共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數(最少取1顆)。
兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子(最少取乙個),並且取的石子數量不能多於該堆石子規定好的最多取子數,等哪個人無法取子時就表示此人輸掉了遊戲。
假設每次都是小王先取石子,並且遊戲雙方都絕對聰明,現在給你石子的堆數、每堆石子的數量和每堆石子規定的單次取子上限,請判斷出小王能否獲勝。
第一行是乙個整數t表示測試資料的組數(t<100)每組測試資料的第一行是乙個整數n(1對於每組測試資料,輸出win表示小王可以獲勝,輸出lose表示小王必然會敗。
211000 1
21 1
1 1
loselose
注意下面一組測試資料21 1 2 2正確的結果應該是win因為小王會先從第二堆石子中取乙個石子,使狀態變為1 11 2這種狀態下,無論對方怎麼取,小王都能獲勝。
解題思路:
這道題是巴什博弈和尼姆博弈的雜糅,因為尼姆博弈要求對每一堆石子可以取1-全部,而這道題限制了個數,就成為了巴什博弈。那為什麼可以用尼姆博弈的思想來求解呢?
因為我們可以發現,當我們使用巴什博弈取到最後一次時,得到的n%(m+1)結果肯定using namespace std;
int main()
if(ans==0)
cout<<"lose" cout<<"win"<} return 0; } 時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數 最少取1顆 兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 ... 時間限制 3000 ms 記憶體限制 65535 kb 難度 5描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數 最少取1顆 兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 並... 尼姆博弈和巴什博奕的結合 題目思路 每一堆的必勝狀態是 m n 1 然後對每一堆的最優解進行異或,如果是非平衡狀態則先手必勝,否則先手必敗。2017年8月23日23 32 33 nyoj135 nimm bash ac include include include include include ...NYOJ 題目135取石子(二)(博弈)
博弈之 取石子系列(二) nyoj 135
NYOJ135 取石子(二)尼姆博弈 巴什博奕