Hdu 1525 歐幾里得博弈

2022-07-17 10:24:12 字數 570 閱讀 6495

兩堆石子每次可以在大堆中取小堆的倍數個石子 第乙個拿光某個堆的玩家贏

假設a>=b

必勝狀態:a%b==0或a/b>=2 因為當a/b>=2時 當前玩家可以選擇將狀態轉移至 a%b+b或a%b 同時a%b+b可轉移至a%b 則這兩個狀態中必有乙個為必勝態

#includeusing

namespace

std;

intmain()

if (a % b == 0

)

int k = 0

;

while (1

)

if (a % b == 0 || a / b != 1

) a = a %b;

k++;

}if (k % 2 == 0

) else}}

view code

如果是第乙個拿光某個堆的玩家輸的話

當前遊戲的sg值為[a/b-b/a]向下取整

HDU 1525 博弈 通俗易懂的詳細解釋

題目鏈結 題意 兩人博弈,給出兩個數a和b,較大數減去較小數的任意倍數,結果不能小於0,將兩個數任意乙個數減到0的為勝者。題解 假設a大於b,若 a b,當前玩家勝利。若 a b 0,當前玩家勝利。若 a 2 b,當前玩家能決定是讓自己取 b,a b 還是讓對手取 b,a b 當然,按照最優策略,此...

poj 2348 歐幾里得博弈

題意 給定兩個數,兩個人輪流操作,先把其中乙個數變為0的人贏。這種操作是用把大數變為大數減小數的若干倍的差 不能小於0 問誰能贏。思路 說的很好 誰先搶到關鍵態,誰就能贏。關鍵態就是大數是小數的二倍多。乙個人一旦搶到了關鍵態,就可以直接操控下面一連串的非關鍵態的次序,非關鍵態相當於每個人進行的都是a...

歐幾里得遊戲 博弈論啟蒙

小明和小紅在玩歐幾里得遊戲。他們從兩個自然數開始,第乙個玩家小明,從兩個數的較大數中減去較小數的盡可能大的正整數倍,只要差為非負即可。然後,第二個玩家小紅,對得到的兩個數進行同樣的操作,然後又是小明。就這樣輪流進行遊戲,直至某個玩家將較大數減去較小數的某個倍數之後差為0為止,此時遊戲結束,該玩家就是...