135 取石子(二)

2021-08-20 14:38:18 字數 854 閱讀 7476

小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。

遊戲規則如下:共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數(最少取1顆)。

兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子(最少取乙個),並且取的石子數量不能多於該堆石子規定好的最多取子數,等哪個人無法取子時就表示此人輸掉了遊戲。

假設每次都是小王先取石子,並且遊戲雙方都絕對聰明,現在給你石子的堆數、每堆石子的數量和每堆石子規定的單次取子上限,請判斷出小王能否獲勝。

第一行是乙個整數t表示測試資料的組數(t<100)

每組測試資料的第一行是乙個整數n(1對於每組測試資料,輸出win表示小王可以獲勝,輸出lose表示小王必然會敗。

2

11000 1

21 1

1 1

lose

lose

注意下面一組測試資料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;

}

NYOJ 題目135取石子(二)(博弈)

時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數 最少取1顆 兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 ...

博弈之 取石子系列(二) nyoj 135

時間限制 3000 ms 記憶體限制 65535 kb 難度 5描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數 最少取1顆 兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 並...

NYOJ135 取石子(二)尼姆博弈 巴什博奕

尼姆博弈和巴什博奕的結合 題目思路 每一堆的必勝狀態是 m n 1 然後對每一堆的最優解進行異或,如果是非平衡狀態則先手必勝,否則先手必敗。2017年8月23日23 32 33 nyoj135 nimm bash ac include include include include include ...