description
公元2023年,人類進入了宇宙紀元。
l國有n個星球,還有n-1條雙向航道,每條航道建立在兩個星球之間,這n-1條航道連通了l國的所有星球。
小p掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如:有一艘物流飛船需要從$u_i$號星球沿最快的宇航路徑飛行到$v_i$號星球去。顯然,飛船駛過一條航道是需要時間的,對於航道i,任意飛船駛過它所花費的時間為$t_i$,並且任意兩艘飛船之間不會產生任何干擾。
為了鼓勵科技創新,l國國王同意小p的物流公司參與l國的航道建設,即允許小p把某一條航道改造成蟲洞,飛船駛過蟲洞不消耗時間。在蟲洞的建設完成前小p的物流公司就預接了m個運輸計畫。在蟲洞建設完成後,這m個運輸計畫會同時開始,所有飛船一起出發。當這m個運輸計畫都完成時,小p的物流公司的階段性工作就完成了。如果小p可以自由選擇將哪一條航道改造成蟲洞,試求出小p的物流公司完成階段性工作所需要的最短時間是多少?
input
第一行包括兩個正整數n,m,表示l國中星球的數量及小p公司預接的運輸計畫的數量,星球從1到n編號。接下來n-1行描述航道的建設情況,其中第i行包含三個整數$a_i,b_i,t_i$,表示第i條雙向航道修建在$a_i$與$b_i$兩個星球之間,任意飛船駛過它所花費的時間為$t_i$。接下來m行描述運輸計畫的情況,其中第i行包含兩個正整數$u_i$和$v_i$,表示第i個運輸計畫是從$u_i$號星球飛往$v_i$號星球。
output
輸出檔案只包含乙個整數,表示小p的物流公司完成階段性工作所需要的最短時間。
sample input
6 3
1 2 3
1 6 4
3 1 7
4 3 6
3 5 5
3 6
2 5
4 5sample output
hint
$n\leq300000$
solution
這道題就是求在一條邊的時間不算的情況下,求$u_i$到$v_i$的最大值的最小值.
顯然二分答案ans,然後判斷對於所有花費時間$>ans$的$(u_i,v_i)$的交是否為空.
如果不為空,若滿足$max\-max\\leq ans$,則合法.
求路徑交是否為空=求是否存在一條邊所有路徑都經過.
$w[i]$表示$i$連向它父親的那條邊有多少條路徑經過,
每次$w[u_i]+1,w[v_i]+1,w[lca[(u_i,v_i)]-2$,向上傳遞即可.
#include#include#include#include#include#include#include#include#include#include#define k 20
#define n 300005
#define m 600005
#define inf 300000000
using namespace std;
typedef long long ll;
struct graphe[m];
struct linea[n];
int f[n][k],g[n],t[n],w[n],ef[n],dep[n],n,m,mk,sum,cnt;
bool v[n],flag;
stacks;
inline int read()
return ret;
}inline void addedge(int x,int y,int w)
inline void dfs(int u)
inline int lca(int x,int y)
else}}
}inline bool chk(int k)
}flag=false;total(1);
return flag&&ma-mk<=k;
}inline void init()
printf("%d\n",l);
}int main()
bzoj4326 NOIP2015 運輸計畫
題目 遙想當年初三參加時,想到了二分,想到了lca,就沒想到如何判斷,然後差20分省一23333.首先答案顯然滿足二分性質,之後判定答案。我們把長度超過k的路徑找到,找出它們公共邊中最長的,把它變為0,看是否可行。如何,找公共邊?樹鏈剖分當然可以,但太複雜了。可以把兩端標記加1,lca標記減2,之後...
bzoj4326 noip 2015 運輸計畫
time limit 30 sec memory limit 128 mb submit 1841 solved 1173 submit status discuss 公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航...
bzoj4326 NOIP2015 運輸計畫
題目 大佬的部落格 思路其實很簡單,就是tarjan求lca 二分答案 樹上差分 貌似不需要解釋,看到這個思路就應該基本上會寫了吧 實現起來也聽簡單的 include using namespace std const int n 300003 struct nodee n 1 q n 1 stru...