時間限制:1000 ms | 記憶體限制:65535 kb
難度:3
描述最近
topcoder
的piaoyi
和hrdv
很無聊,於是就想了乙個遊戲,遊戲是這樣的:有
n堆石子
,兩個人輪流從其中某一堆中任意取走一定的石子
,最後不能取的為輸家,注意:
每次只能從一堆取任意個,可以取完這堆,但不能不取。假設
piaoyi
先取石子,請你幫他判斷他是否能贏(假設他們取的過程中不發生失誤
,他們足夠聰明
)。輸入
第一行輸入n,代表有n組測試資料(n<=10000)
以下每組測試資料報含兩行:第一行:包含乙個整數m,代表本組測試資料有m(m<=1000)堆石子;
:第二行:包含m個整數ai(ai<=100),分別代表第i堆石子的數量。
輸出若piaoyi贏輸出「piaoyi」,否則輸出「hrdv」注意每組結果佔一行。。
樣例輸入32
1 13
3 8 11
25 10
樣例輸出
hrdv**hrdv
piaoyi
原創 上傳者
tc_張友誼
思路:典型的尼姆博弈,套用結論。對每堆的數量異或運算,最後結果為零的說明是先手失敗,否則,先手贏。
我的**如下:
#includeint main()
puts(sum?"piaoyi":"hrdv");
} return 0;
}
下面這是提交之後看到的最優**:
#include#includeusing namespace std;
void in(int &a)
int main()
if(ans) puts("piaoyi");
else puts("hrdv");
}return 0;
}
南陽 oj尼姆博弈
時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,並且規定好每堆石子最多可以取的石子數 最少取1顆 兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 ...
博弈 尼姆博弈
今天我們來聊一聊另一種博弈 尼姆博弈,這一種博弈可以說是巴什博弈的一種變體,巴什博弈中 石子 的堆數為1堆,而在利姆博弈中 石子 的堆數為n堆,還有在尼姆博弈中取石子的規則也發生了變化,前一種博弈中取石子的數量限定在 1,l 而後一種取石子的數量可以為任意數 但不能不取,而且還不能超過這一堆石子的總...
博弈論(尼姆博弈)
尼姆博弈指的是這樣乙個博弈遊戲 有任意堆物品,每堆物品的個數是任意的,雙方輪流從中取物品,每一次只能從一堆物品中取部分或全部物品,最少取一件,取到最後一件物品的人獲勝。結論就是 把每堆物品數全部異或起來,如果得到的值為0,那麼先手必敗,否則先手必勝。這樣理解 先手必敗態為面臨的所有堆都為0,而此時的...