NOIP2015 P2680 運輸計畫

2021-09-26 21:29:38 字數 2341 閱讀 6831

算 法:

樹鏈剖分

,最近公

共祖先,

差分,二

分答

案演算法:樹鏈剖分,最近公共祖先,差分,二分答案

演算法:樹鏈剖

分,最近

公共祖先

,差分,

二分答案

解題思路:

樹剖剖出每乙個點到根的距離用dis

[u

]dis[u]

dis[u]

表示u

uu到根距離。

找到每對點的lca,並算出距離,用d[i

]d[i]

d[i]

表示第i

ii組資料中兩點距離

二分答案mid

midmi

d作為最大邊長,找出有多少個d[i

]d[i]

d[i]

大於m id

midmi

d再從所有大於mid

midmi

d的邊中刪除一條邊,使得max

(d[i

])

max(d[i])

max(d[

i])減去這條邊後小於mid

midmi

d

/****************************************

* problem 運輸計畫

* time 2019.9.5

* user mzg1824_ty

* algrothim 樹鏈剖分 最近公共祖先 差分 二分

*****************************************/

#include

#define rep(i,a,b) for(register int (i)=(a);(i)<=(b);(i)++)

#define don(i,a,b) for(register int (i)=(a);(i)>=(b);(i)--)

using

namespace std;

const

int maxn=

3e5+10;

const

int maxm=

1e3+10;

int n,m,cnt;

int head[maxn]

,w[maxn]

;int f[maxn]

,size[maxn]

,id[maxn]

,son[maxn]

,top[maxn]

,wt[maxn]

,dep[maxn]

;int dis[maxn]

,lca[maxn]

,maxx,maxx1,a[maxn]

,b[maxn]

,d[maxn]

,topre[maxn]

;template

<

class

t>

inline

void

read

(t &x)

while

(isdigit

(ch)

) x*

=f;}

struct nodee[maxn<<1]

;void

add(

int u,

int v,

int w)

void

readdata()

}void

dfs1

(int u,

int fa,

int deep)}}

void

dfs2

(int u,

int topf)

}inline

intlca

(int x,

int y)

if(dep[x]

>dep[y]

)swap

(x,y)

;return x;

}bool

check

(int k)

}don

(i,n,1)

return

false;}

inline

intbinary_serch

(int l,

int r)

else l=mid+1;

}return ans;

}void

work()

printf

("%d\n"

,binary_serch

(maxx-maxx1,maxx+1)

);}int

main()

Luogu2680 NOIp2015 運輸計畫

傳送門 sol 最暴力的做法就是列舉最長鏈上的邊,然後再算一次所有的鏈長,更新 ans 這裡要求最大的最小,容易想到二分答案.對於二分的值 mid 掃一遍所有的鏈,若鏈長小於等於 mid 那麼是合法的不需要處理的.否則,就記錄鏈上所有的邊經過的次數 1 最後找到被經過次數等於鏈長大於 mid 的鏈數...

NOIP2015運輸計畫(洛谷2680)

標籤 樹鏈剖分,二分 題目背景 公元 2044 年,人類進入了宇宙紀元。題目描述 l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道連通了 l 國的所有星球。小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如 有一艘物 流飛船需要從 ui ...

P2680 運輸計畫

好久沒更新部落格了,更一篇吧 qwq 傳送門要求我們讓路徑的最大時間最小 這很二分答案 可以二分答案 mid 然後想辦法 o n 去檢查答案是否合法 可以記錄出路徑長度大於 mid 的路徑,盡量在這些路徑的交集部分建造黑洞 顯而易見 我們可以用邊差分 diff i 來記錄這條邊被幾個大於 mid 的...