學習文章連線:
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...