公元 2044 年,人類進入了宇宙紀元。
l 國有 n 個星球,還有 n-1 條雙向航道,每條航道建立在兩個星球之間,這 n-1 條航道連通了 l 國的所有星球。
小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如:有一艘物
流飛船需要從 ui 號星球沿最快的宇航路徑飛行到 vi 號星球去。顯然,飛船駛過一條航道 是需要時間的,對於航道 j,任意飛船駛過它所花費的時間為 tj,並且任意兩艘飛船之 間不會產生任何干擾。
為了鼓勵科技創新,l 國國王同意小 p 的物流公司參與 l 國的航道建設,即允許小 p 把某一條航道改造成蟲洞,飛船駛過蟲洞不消耗時間。
在蟲洞的建設完成前小 p 的物流公司就預接了 m 個運輸計畫。在蟲洞建設完成後, 這 m 個運輸計畫會同時開始,所有飛船一起出發。當這 m 個運輸計畫都完成時,小 p 的 物流公司的階段性工作就完成了。
如果小 p 可以自由選擇將哪一條航道改造成蟲洞,試求出小 p 的物流公司完成階段 性工作所需要的最短時間是多少?
輸入格式:
輸入檔名為 transport.in。
第一行包括兩個正整數 n、m,表示 l 國中星球的數量及小 p 公司預接的運輸計畫的數量,星球從 1 到 n 編號。
接下來 n-1 行描述航道的建設情況,其中第 i 行包含三個整數 ai, bi 和 ti,表示第
i 條雙向航道修建在 ai 與 bi 兩個星球之間,任意飛船駛過它所花費的時間為 ti。
接下來 m 行描述運輸計畫的情況,其中第 j 行包含兩個正整數 uj 和 vj,表示第 j個 運輸計畫是從 uj 號星球飛往 vj 號星球。
輸出格式:
輸出檔名為 transport.out。
共 1 行,包含 1 個整數,表示小 p 的物流公司完成階段性工作所需要的最短時間。
輸入樣例#1:
6 3輸出樣例#1:1 2 3
1 6 4
3 1 7
4 3 6
3 5 5
3 6
2 5
4 5
11所有測試資料的範圍和特點如下表所示
請注意常數因子帶來的程式效率上的影響。
【題目分析】
二分答案,如果一條航道的長度大於當前二分的答案,那麼很明顯這條航道上需要有一條邊權值變為0,且條邊權值應該》=(航道長度-二分的答案),那麼若想使得所以不滿足條件的航道都滿足條件,這個蟲洞就應該設定在這些航道的交集上,且權值應》=(max(航道長度)-二分的答案),航道的交集具體實現可以把這條航道上路徑次數都加1,假設不滿足條件的航道有m條,那麼一條邊如果次數==m條,就表示其是m條航道的交集了,實現的話乙個dfs,複雜度o(nlogn)
//t—t 95
#include#include
#include
#include
#include
using
namespace
std;
#define maxn 600100
intdp,pre[maxn],p[maxn],tt[maxn],ww[maxn],fa[maxn],deep[maxn],v[maxn],a[maxn],b[maxn],lca[maxn];
int s[maxn][20
],n,m,sum[maxn],ans,cnt,dis[maxn],dist[maxn];
void gao(int
x)
}int check(int
x) gao(1);
for(int i=1;i<=n;i++)
if(sum[i]==cnt&&v[i]>=dec)
return1;
return0;
}int getlca(int x,int
y)void dfs(int
x) i=pre[i];
}}void add(int x,int y,int
z)int
main()
dfs(1);
for(int i=1;i<=n;i++)
s[i][
0]=fa[i];
for(int i=1;i<20;i++)
for(int j=1;j<=n;j++)
s[j][i]=s[s[j][i-1]][i-1
];
for(int i=1;i<=m;i++)
int l=0,r=0
;
for(int i=1;i<=m;i++)
r=max(r,dist[i]);
intmid;
while(l<=r)
printf(
"%d\n
",l);
return0;
}
P2680 運輸計畫
好久沒更新部落格了,更一篇吧 qwq 傳送門要求我們讓路徑的最大時間最小 這很二分答案 可以二分答案 mid 然後想辦法 o n 去檢查答案是否合法 可以記錄出路徑長度大於 mid 的路徑,盡量在這些路徑的交集部分建造黑洞 顯而易見 我們可以用邊差分 diff i 來記錄這條邊被幾個大於 mid 的...
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 號星球...