賽道修建 二分答案

2022-05-20 23:00:35 字數 757 閱讀 1227

最小賽道長度的最大值,很明顯的二分答案,即求出賽道長度均大於等於\(mid\)時最多賽道條數,判斷是否大於\(m\)即可。

但是如何求出最多的條數?我們發現這是一顆樹,可以用一種子樹遞迴計算的思路,算出兒子節點的答案來算出父親節點的答案,每次我們只管算出當前子樹,再將一些情況上傳到父親,這是乙個很妙的思路。

具體如何計算當前子樹最大賽道數就咕咕咕了,主要是上面的思想

#include #include #include #define maxn 50005

using namespace std;

int head[maxn],vv[maxn*2],ww[maxn*2],nxt[maxn*2],tot;

inline void add_edge(int u, int v, int w)

multiset s[maxn];

multiset ::iterator iter;

int n,m,cnt;

int solve(int u, int fa, int k)

int res=0;

while(!s[u].empty())else

}return res;

}bool check(int k)

int main()

int ans=0;

while(l<=r)

printf("%d", ans);

return 0;

}

P5021 賽道修建 貪心 二分

c 城將要舉辦一系列的賽車比賽。在比賽前,需要在城內修建 mm 條賽道。c 城一共有 nn 個路口,這些路口編號為 1,2,n1,2,n,有 n 1n 1 條適合於修建賽道的雙向通行的道路,每條道路連線著兩個路口。其中,第 ii 條道路連線的兩個路口編號為 a ia i 和 b ib i,該道路的長...

NOIP2018 賽道修建(樹形dp 二分)

弱雞萌新2018年難忘的騙分之旅 花了2個小時騙分2333 從n個點構成的的樹中取出m條邊不重複路徑,使得最小的路徑最長 由於沒有乙個確定的限制且問題具有單調性,首先肯定想到二分答案,設該數為x,那麼需要找出長度大於等於x的路徑條數 對於乙個子樹i,考慮它的貢獻,分為兩種 i子樹中選一條或兩條鏈,使...

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...