HDU 1527 取石子遊戲 威佐夫博弈

2021-09-28 16:24:08 字數 858 閱讀 2657

題目大意:有兩堆石子,兩個人輪流取,每次可以取一堆中任意多的石子,或者取兩堆中數量相同的石子,先將石子取完者獲勝,若先手獲勝輸出1,後手獲勝輸出0

題目分析:這個題目涉及到了威佐夫博弈

這種博弈有兩種局勢,一種是奇異局勢,一種是正常局勢,我們可以理解為奇異局勢是先手必敗的局勢,正常局勢就是後手必敗的局勢。

該怎麼理解奇異局勢呢?其實我也不太理解,但我隊友和我說了該怎麼計算之後,大概還是能記住這個公式該怎麼用了

從小到大我來列舉幾個奇異局勢:

(1,2)

(3,5)

(4,7)

(6,10)

(8,13)

(9,15)

(11,18)

(12,20)

(14,23)

(16,26)

先列舉這麼十個奇異局勢,那麼我們該怎麼判斷乙個局勢是否屬於奇異局勢呢?

這裡介紹乙個很奇怪的公式。。我們設**分割比例k=

我們設每乙個奇異局勢為(min,max)

上面的每乙個奇異局勢前面都有乙個序號,代表的也是兩個數字之差,也正是max-min

而每乙個min都是可以計算出來的

這樣一來給出乙個局勢就可以根據其絕對值之差來判斷是否屬於奇異局勢了

**:

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const int n=4100;

int main()

return 0;

}

HDU 1527 取石子遊戲 威佐夫博弈

include include include includeusing namespace std int main else description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆...

HDU 1527 取石子遊戲 威佐夫博弈

problem description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取...

HDU 1527 取石子遊戲(威佐夫博弈)

有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最後你是勝者還是敗者。輸入...