HDU 3389 階梯博弈變形

2022-05-20 10:28:01 字數 952 閱讀 7054

n堆石子,每次選取兩堆a!=b,(a+b)%2=1 && a!=b && 3|a+b,不能操作者輸

選石子堆為奇數的等價於選取步數為奇數的,觀察發現 1 3 4 是無法再移動的 步數為0,然後發現以6為週期,取模就好了

/** @date    : 2017-10-14 19:18:00

* @filename: hdu 3389 基礎階梯博弈變形.cpp

* @platform: windows

* @author : lweleth ([email protected])

* @link :

* @version : $id$

*/#include #define ll long long

#define pii pair

#define mp(x, y) make_pair((x),(y))

#define fi first

#define se second

#define pb(x) push_back((x))

#define mmg(x) memset((x), -1,sizeof(x))

#define mmf(x) memset((x),0,sizeof(x))

#define mmi(x) memset((x), inf, sizeof(x))

using namespace std;

const int inf = 0x3f3f3f3f;

const int n = 1e5+20;

const double eps = 1e-8;

int main()

if(sg)

printf("case %d: alice\n", ++cnt);

else printf("case %d: bob\n", ++cnt);

} return 0;

}

HDU 3389 Game 階梯博弈變形

題意 編號1 n的盒子,當你的編號滿 b思路 首先要了解一下什麼是階梯博弈,參考鏈結.對於一般的階梯博弈,當到達地面 即0階 的時候就是終止條件,但是這道題由於 a b 2 1 a b 3 0這個條件的限制,所以我們可以知道只有當 a b 6 3的時候才能進行狀態轉移.這道題,我們通過畫圖可以知道,...

Game HDU 3389 (階梯博弈)

題目 題意1 n帶編號的盒子,當編號滿足a b a非空 a b 3 0 a b 2 1則可以從a中取任意卡片到b中,誰不能取了誰就輸。思路階梯博弈 階梯博弈等效為奇數號階梯的尼姆博弈。假設我們是先手。我們按照尼姆博弈的原則進行第一次移動。如果對方移動奇數號階梯的石子,我們繼續按照尼姆博弈的原則移動。...

hdu 3389 Game(階梯博弈)

1 3 4號盒子是最終狀態,所有出始狀態都會經過若干步操作變成這個最終狀態。如果仔細分析,會發現 n 6 0 或 2 或 5的盒子,經過奇數步轉移到1 3 4中去,其他的則須經過偶數步才能轉移過去。易證 偶數步的不用管,對於奇數步的操作只需轉換成nim博弈,利用異或運算判斷是否必勝即可。includ...