牛客 樹上博弈 思維

2021-10-02 18:06:02 字數 724 閱讀 9739

題目大意:給出一棵樹,現在有兩個人在玩乙個遊戲,兩人依次在樹上行走,只能走沒有人的結點,無法行走的人失敗,題目需要我們求出有多少個初始點對,對於先手而言是必勝的情況

題目分析:其實稍微畫圖就能看出來,如果初始時兩個人之間的距離為偶數,那麼先手必勝,否則先手必敗,因為如果初始距離為偶數的話,那麼先手總是可以有路可走的,而後手總會被逼到葉子結點上去,而距離為偶數,意味著深度奇偶性相同的結點,讀入時記錄一下奇偶性不同的結點有多少個,最後排列組合c( n , 2 )就是答案了,因為當兩個點確定時,兩人的位置還可以互換,所以最後結果需要乘以 2 

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int n=1e6+100;

int deep[n];

ll cnt[2];

int main()

printf("%lld\n",cnt[0]*(cnt[0]-1)+cnt[1]*(cnt[1]-1));

return 0;

}

牛客小白月賽23 樹上求和(思維)

有一棵包含n個節點和n 1條邊的樹,規定樹鏈 u,v 為樹上從u到v的簡單路徑。樹的每條邊上都有乙個正整數,這個正整數被稱作這條邊的顏色,規定一條樹鏈的權值w u,v 為這條樹鏈上所有邊的顏色的代數和。而整棵樹的權值為所有不同的樹鏈的權值的代數和。已知所有邊的顏色集合恰好為1到n 1這n 1個不同的...

牛客,String of CCPC(思維)

題意 給定乙個長度為n的字串s n s n 只由c,p組成,定義s n 的價值為 s n 中不同的 ccpc 連續子串的個數。現可以向這個子串中插入乙個c,p,但第i次操作,需要消耗i 1的單位價值。求s n 的價值最大為多少。分析 稍微分析一下,可以發現,每次操作,最多只能使s n 的價值 1,假...

牛客 Shortest Path dfs 思維

非常巧妙的轉換。首先我們可以觀察性質,一條邊不可能出現兩次,因為顯然可以被更好的方案替代 之後,每個邊就存在選或者不選兩種情況 如果以子樹的節點為偶數,那麼就不需要,否則需要,做一下dfs即可 includeusing namespace std typedef long long ll const...