話說去年為什麼暴力炸成了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,該道路的長...