地球和月球中間有
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...