網路流24題 CTSC1999 家園

2021-08-18 06:03:54 字數 968 閱讀 8007

地球和月球中間有

n n

個太空站,有

m' role="presentation">m

m艘太空船,

k k

個人要從地球前往月球。

已知每個太空站可以容納無限多的人,每艘太空船的承載人數為 hi

' role="presentation">hih

i,以及它們的行駛路線(經過的每乙個太空站編號)。

任意兩個太空站之間的行駛時間均為

1 1

,太空船週期行駛(終點站再回到初始站)

乘客可以選擇在任意整數時刻下車或上車,這個操作不消耗時間。

假設所有太空船0時刻都在初始站,求所有人從地球轉移到月球的最短時間。

如果不能到達,輸出0。n≤

13' role="presentation">n≤13

n≤13,

m≤20 m≤20

,k≤50 k≤50

。p2754 [ctsc1999]家園

首先判斷是否有解。

很顯然只要地球和月球之間存在路徑,那麼就一定有解。

用並查集維護所有點的連通關係,最後判斷地球和月球是否屬於同一集合即可。

然後是求最小值。

可以發現對於任意時刻 ti

t

i,所有太空船的位置是已知的。

那麼我們將太空船的承載人數設為邊的容量,乘客設為流量。

當存在流量 f≥

k f≥k

進入月球時,轉移結束。

那麼該如何建圖?

那麼按照時間建分層圖,對於時刻

t t

的點 pi

' role="presentation">pip

i,建立新點pi

,tp i,

t,根據太空船的行駛路徑連線新邊,繼續跑最大流,直到流量達到

k k

結束。具體而言,即:

網路流24題 CTSC1999 家園

對於這種乙個點 表面意義上的乙個點,比如說乙個位置 對應多種情況的 比如說隨著時間的推移有著不同的狀態,而且這種狀態 2 我們考慮在類似於分層圖上面跑網路流。比如說這道題,週期的暴力處理顯然是一件很棘手的事情,我們看到資料範圍這麼小,就可以想一想把每個時間點的圖都建出來 每個點對應哪乙個空間站在第幾...

CTSC1999 網路流24題 家園

題目 洛谷p2754。題目大意 有 n 個空間站,m 個飛船,每個飛船有各自的停靠站點,並且從第乙個停靠站點開始,不斷迴圈。每個飛船有不同的容量 1為月球,0為地球 每個飛船初始停在第乙個停靠站上,每過1s就會到下乙個停靠站。在空間站上的人可以選擇上飛船,也可以選擇不上飛船。現在有 k 個人要從地球...

CTSC 1999 家園 網路流24題 星際轉移

直接把每乙個點,每一天拆成乙個點。然後每個點到下一天連 inf 的邊。然後把飛船的路徑用容量為飛船容量的邊連線。然後跑網路流判斷是否滿流。include include include include include using namespace std define f i,j,k for in...