NOIP2015Day2T3 運輸計畫

2021-08-29 20:32:51 字數 1644 閱讀 9840

題解:

二分答案。

假設列舉到答案是xxx。

找出所有長度大於x

xx的鏈,那麼這些鏈上必須要放蟲洞,而且必須放在一條所有鏈都經過的邊上,否則必然有一條鏈的長度是大於x

xx的。

這個直接差分就能求出所有鏈都經過的邊,並且把最長的那條改為蟲洞,看看所有邊是否合法,則可判斷x

xx是否可行。

應該不是很難吧。。。

比較簡單的noip題。

不過**有點毒瘤,95分了n遍,最後把swap改掉才過。

code:

#include

#define ll long long

const

int n=

1e6+5;

using

namespace std;

int dist[n]

,len[n]

,head[n]

,n,m,deep[n]

,fa[n]

;int tot,t[n]

,f[n][20

],a[n]

,b[n]

,ans[n]

,sum[n]

;inline ll read()

while

(s<=

'9'&&s>=

'0')

return x*f;

}struct node

edge[n]

;void

add(

int u,

int v,

int w)

void

dfs(

int u)}}

intlca

(int u,

int v)

void

dfs(

int u)}}

intcheck

(int x)

dfs(1)

;for

(int i=

1;i<=n;i++)if

(sum[i]

==cnt&&len[i]

>=mx)

return1;

return0;

}int

main()

dfs(1)

;for

(int i=

1;i<=n;i++

)f[i][0

]=fa[i]

;for

(int j=

1;j<

20;j++

)for

(int i=

1;i<=n;i++

) f[i]

[j]=f[f[i]

[j-1]]

[j-1];

int l=

0,r=0;

for(

int i=

1;i<=m;i++

)while

(l<=r)

printf

("%d\n"

,l);

return0;

}

NOIP 2015 day2 T3 運輸計畫

time 2018 9 27 題目大意 資料範圍 1 n m 300000 0 v al 1000 time limit 1000ms memory limit 256mb 1 n,m 300000 0 val 1000 text text 1 n m 3 0000 00 v al 1 000tim...

NOIP 2015 Day2 T3 運輸計畫

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

noip2015day1t2 資訊傳遞

把每個同學看成乙個點,傳遞關係看成一條邊,點數等於邊數,因此圖由若干個環或環鏈復合邊數等於點數的東西組成,不存在孤立鏈。在圖上,傳遞一輪後,每個點掌握沿邊前乙個點的資訊,傳遞x輪後,任意乙個點恰好掌握沿邊反向前進x條邊的路徑上的所有點的資訊,要聽到自己的資訊,也就是在環上走一圈。這樣就把題目抽象為找...