基礎博弈問題

2021-08-20 20:55:15 字數 974 閱讀 4714

time limit: 1000 ms

memory limit: 65536 kib

submit

statistic

problem description

guns和roses是兩個好朋友,這一天他們比賽吃葡萄。假定他們有ans顆葡萄。

在比賽之前他們會首先確定每次吃葡萄的數量的最大值為s,和ans的具體值。

兩個人輪流吃葡萄,每次最多吃s顆,不能不吃。(即假定每次吃m顆葡萄,則 1<=m<=s)

遊戲規定在誰吃完葡萄後,他們兩個人所吃的葡萄總和等於ans,誰就獲勝。

假定他們兩人足夠聰明,在吃葡萄的過程中都不會使值大於ans。

現在規定guns先手,請你幫助他計算為了確保最終取得勝利,他第一次應該吃多少顆葡萄?

若第一次無論吃多少顆葡萄,最終都無法取得勝利,請你輸出 -1 。

input

輸入資料有多組,到 eof 結束。

對於每組資料,輸入有一行,包含用空格隔開的兩個整數ans,s。

output

對於每組資料,輸出一行。

這一行包含乙個整數,即guns為了保證最終取得勝利第一次選擇所吃的葡萄數目。(若無法保證最終取得勝利,則輸出 -1)

sample input

9 4

123 8

14 6

sample output

4

6-1

思路:

當ans除於(1+s)的餘數為零的時候,就是guns無論怎樣取先手都不可能獲勝的情況,既要輸出-1;因為無論你現先手取任何數s1,roses只需要取(1+s)-s1他就會獲勝。

**如下:

基礎博弈 理解

這裡的博弈,即兩個人輪流進行決策的非合作博弈,並且兩人都使用最優策略來獲取勝利,遵循相同的規則且均不會出現失誤,博弈的次數是有限的。1.巴什博弈 bash game 只有一堆n塊石子,兩個人輪流取石子,規定每次最少取1個,最多取m個,最終先取完者獲勝。通常來想,如果n m 1,那麼無論先取者拿走多少...

基礎經典博弈

1.巴什博弈 題目一般是兩人輪流每次在n個物品中拿取不超過m個且至少拿乙個,拿光者勝出。我們可以將n個物品寫成k m 1 b b 0 所以先手先拿掉b個物品,後手只能拿x個物品 1 x m 這時先手再拿m 1 x個物品,迴圈往復可以保證先手的人最後拿完物品,先手就必勝。當b 0時無論先手怎麼拿,後手...

博弈基礎小結

巴什博弈 一堆n個物品,兩個人輪流取1 m個,最後乙個取光的人勝利 if n m 1 return false else return true wythoff博弈 兩堆各若干個物品,兩人輪流從一堆中取走至少乙個,或者從兩堆中取走相同數量的物品,最後乙個取光的人勝利 差值 分割比 最小值時後手贏,否...