洛谷P5021 賽道修建

2021-09-26 05:45:21 字數 704 閱讀 4167

話說去年為什麼暴力炸成了15......

其實我現在都不會做,參考的一位p黨大佬的題解,寫成了c++版而已(附註了一些關鍵部分的細節)。

總之現在弄懂了qwq

**:

#includeusing namespace std;

const int maxn=1e6+10,maxm=2e6+10,inf=1e8;

int bg[maxn],nt[maxm],to[maxm],w[maxm],e;

int n,m,ed[maxn],num,st[maxn],top,cnt,up[maxn],ans;

void insert(int x,int y,int z)

void dfs(int x,int fa,int lim)

num=0;

for (i=bg[x];i;i=nt[i])

//貪心:

sort(ed+1,ed+num+1); //排完序使得邊滿足單調性

i=1; j=num; top=0;

while (ed[j]>=lim)

while (i<=j)

int main()

r/=m;

while (l<=r)

else r=mid-1;

} printf("%d\n",ans);

return 0;

}

洛谷 P5021 賽道修建(樹上貪心)

首先介紹乙個東西 multiset。它可以看成乙個有序的序列,且允許存在重複的數,並支援logn的時間插入和刪除。其他 看到題面,首先想到的是二分答案。二分第m條的長度,判斷的話就看是否至少存在有m條路徑,使得路徑長度大於等於mid。怎樣每次找的都是盡可能大的呢?那就得在樹上貪心。貪心策略 對於經過...

P5021 賽道修建 NOIP2018

傳送門 考場上把暴力都打滿了,結果檔案輸入輸出寫錯了.當時時間很充裕,如果認真想想正解是可以想出來的.問你 長度最小的賽道長度的最大值 顯然二分答案 考慮如何判斷是否可行 顯然對於乙個節點,它最多只能向父親傳一條路徑長度 那麼其它路徑的合併只能在子樹間進行 貪心一波,如果一段路徑在子樹就可以合併出合...

P5021 賽道修建 貪心 二分

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