P2680 運輸計畫

2022-04-02 15:13:12 字數 920 閱讀 5414

好久沒更新部落格了,更一篇吧\(qwq\)

傳送門要求我們讓路徑的最大時間最小

這很二分答案

可以二分答案\(mid\),然後想辦法\(o(n)\)去檢查答案是否合法

可以記錄出路徑長度大於\(mid\)的路徑,盡量在這些路徑的交集部分建造黑洞(顯而易見),我們可以用邊差分\(diff[i]\)來記錄這條邊被幾個大於\(mid\)的路徑包含,假設一共有\(qwq\)個大於\(mid\)的路徑,那麼交集部分就是\(diff[i]==qwq\)的

/*

@ author:pyyyyyy

-----思路------

二分+樹上差分

-----debug-------

*/#includeusing namespace std;

const int n=300010;

struct node

e[n<<1];

int cnt,head[n];

void add(int u,int v,int w)

int dis[n],val[n];

//-------------------------

int fa[n],son[n],size[n],top[n],dep[n];

void dfs1(int u,int fa)

void dfs3(int u,int fa)

}int check(int x)

dfs3(1,0);

for(int i=1;i<=n;++i)

return p[1].dis-maxn<=x;

}signed main()

else l=mid+1;

} cout

}

P2680 運輸計畫

公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道連通了 l 國的所有星球。小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如 有一艘物 流飛船需要從 ui 號星球沿最快的宇航路徑飛行到 vi 號星球...

P2680 運輸計畫

最短的最長鏈,二分答案,然後進行邊差分 大常數選手表示倍增lca卡不過去啊 只好面向資料點變成了一下qaq 學會tarjan求lca再來修吧 或許學會樹剖後?luogu judger enable o2 includeusing namespace std struct nodeeg 300200 ...

洛谷 P2680 運輸計畫

公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道連通了 l 國的所有星球。小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如 有一艘物 流飛船需要從 ui 號星球沿最快的宇航路徑飛行到 vi 號星球...