HDU 5963 朋友 思維 博弈

2021-08-09 10:21:12 字數 602 閱讀 5594

題意:中文題。

思路:考慮和根相連的一條樹鏈,如果這條樹鏈上和根相連的那條邊權值為1,那麼最終在該鏈上的操作次數要為奇數次才能使得和根相連的邊的權值變為0(因為不論選擇該條樹鏈上哪個點,此邊的權值總會翻轉),同理可得和根相連的邊若初始權值為0要操作偶數次。而無論兩個人怎麼操作,都不會改變這些根的直連邊變0所需操作次數的奇偶性,而若總操作次數為奇數次的話那就必定是先手勝了,因此我們只需維護乙個每個點的直連邊中權值為1的個數就行了。

**:

#include#define ll long long

#define maxn 50010

#define inf 0x3f3f3f3f

using namespace std;

typedef pairp;

mapedge;

int degree[maxn];

int main()

while(m--)

else

} }return 0;

}

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

題面 思路 我們通過推理應該知道如下性質 那麼我們只需要維護出每乙個節點邊權為1的出邊個數即可,偶數個boys 贏,奇數個girls贏。關於第二個性質的證明 include using namespace std typedef pairpii const int maxn 40000 10 def...

HDU5963 朋友 博弈

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

HDU 5963 朋友 樹上博弈

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