HDU 5963 朋友 (樹上博弈,思維)

2022-05-03 12:00:19 字數 683 閱讀 6264

題面:

思路:我們通過推理應該知道如下性質:

那麼我們只需要維護出每乙個節點邊權為1的出邊個數即可,偶數個boys 贏,奇數個girls贏。

關於第二個性質的證明:

**:

#include using namespace std;

typedef pairpii;

const int maxn=40000+10;

#define mp make_pair

int n,m;

setst[maxn];

int info[maxn];

int main()

while(m--)

else

}else

else

else

st[x].erase(st[x].lower_bound(mp(y,!z)));

st[y].erase(st[y].lower_bound(mp(x,!z)));

st[x].insert(mp(y,z));

st[y].insert(mp(x,z));}}

}for(int i=1;i<=n;++i)

}return 0;

}

HDU 5963 朋友 樹上博弈

給定一棵樹,樹中每一條邊有乙個權值為0或者1,每次遊戲需要找到乙個點,滿足該點到其父親的邊權為1,然後找到這個點到根節點的簡單路徑,將路徑上所有邊的權值翻轉。當一方無法操作時,另一方就獲勝。每次遊戲有m個操作,0 x表示指定x為根節點,要求輸出誰會贏 1 x y z表示將x和y之間的邊修改為z。本題...

HDU 5963 朋友 思維 博弈

題意 中文題。思路 考慮和根相連的一條樹鏈,如果這條樹鏈上和根相連的那條邊權值為1,那麼最終在該鏈上的操作次數要為奇數次才能使得和根相連的邊的權值變為0 因為不論選擇該條樹鏈上哪個點,此邊的權值總會翻轉 同理可得和根相連的邊若初始權值為0要操作偶數次。而無論兩個人怎麼操作,都不會改變這些根的直連邊變...

HDU5963 朋友 博弈

problem description b君在圍觀一群男生和一群女生玩遊戲,具體來說遊戲是這樣的 給出一棵n個節點的樹,這棵樹的每條邊有乙個權值,這個權值只可能是0或1。在一局遊戲開始時,會確定乙個節點作為根。接下來從女生開始,雙方輪流進行 操作。當一方操作時,他們需要先選擇乙個不為根的點,滿足該點...