hdu5996 hdu5724 階梯博弈

2021-08-28 07:11:01 字數 854 閱讀 5491

學習文章連線:

hdu5724

題目連線:

**如下:(不太懂)

#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const int n=1003;

int cnt[25];

int main()

int tot=0,j=20,fg=0;

while(cnt[j])j--;

for(;j;j--)

ans^=(fg?tot:0);

}if(ans)printf("yes\n");

else printf("no\n");

}}

hdu5996

題目連線:

剛開始還寫了個dfs……超時,後來想想我們把深度為奇數的點異或不久行了嗎,而點的深度等於父節點的深度加1

**如下:

#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const int n=100005;

int dep[n],a[n];

int main()

for(int i=0;iint ans=0;

for(int i=1;iif(ans)printf("win\n");

else printf("lose\n");

}}

hdu 5724 Chess 組合博弈

題意 給你乙個n行20列的棋盤,棋盤裡面有些棋子,每個棋子每次只能往右走一步,如果右邊有棋子,可以跳過去,前提是最右邊有格仔,如果當前選手走到沒有棋子可以走了,那麼就算輸,問你先手是否會贏 題解 一看就知道是組合博弈的問題,關鍵在於如果求sg值,這裡要把一行看成乙個狀態,然後根據sg值的定義去求,如...

hdu5996 階梯nim博弈

第一次接觸到階梯nim博弈 看了這篇部落格,講得比較清楚 大意就是給一顆樹 樹的節點上放有石子,每次只能把石子往父節點移動一下,規定不能移動者輸。看了階梯博弈後大概就能懂這題的意思了,直接把深度為奇數的節點異或起來就可以了 include include include include includ...

hdu 5996 階梯博弈,dfs,水

hdu 5996 dingyeye loves stone 題意 一棵樹n個點,每個點有a i 枚石子。兩人輪流選乙個點,至少取一顆石子移到它的父親結點,最後不能操作的人敗。問先手勝負。tags 好久以前的一場bc,看到沒補,果斷a掉。就是階梯博弈,偶數層的移動沒用。includeusing nam...