CTSC1999 網路流24題 星際轉移

2022-05-02 05:54:08 字數 2252 閱讀 8886

由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有n個太空站 位於地球與月球之間,且有m 艘公共運輸太空船在其間來回穿梭。每個太空站可容納無限多的人,而每艘太空船i 只可容納h[i]個人。每艘太空船將周期性地停靠一系列的太空站,例如:(1,3,4)表示該太空船將周期性地停靠太空站134134134…。每一艘太 空船從乙個太空站駛往任一太空站耗時均為1。人們只能在太空船停靠太空站(或月球、地球)時上、下船。初始時所有人全在地球上,太空船全在初始站。

試設計乙個演算法,找出讓所有人盡快地全部轉移到月球上的運輸方案。

第1行有3 個正整數n(太空站個數),m(太空船個數)和k(需要運送的地球上的人的個數)。其中 1<=m<=13, 1<=n<=20, 1<=k<=50。

接下來的m行給出太空船的資訊。第i+1 行說明太空船pi。第1 個數表示pi 可容納的人數hpi;第2 個數表示pi

乙個週期停靠的太空站個數r,1<=r<=n+2;隨後r 個數是停靠的太空站的編號(si1,si2,…,sir),地球用0

表示,月球用-1 表示。時刻0

時,所有太空船都在初始站,然後開始執行。在時刻1,2,3…等正點時刻各艘太空船停靠相應的太空站。人只有在0,1,2…等正點時刻才能上下太空船。

將全部人員安全轉移所需的時間,如果問題無解,則輸出0。

2 2 1

1 3 0 1 2

1 3 1 2 -1

正解:網路判定+最大流。

可以二分答案,不過不如列舉時間,直接動態加邊,然後在殘量網路中增廣。從源點向第0天的地球連容量為k的邊,從第i天的星球向第i+1的星球連容量為inf的邊,如果第i天到第i+1天有飛船經過,則連一條飛船容量的邊。這樣我們就能解決這個問題了。

1

//it is made by wfj_2048~

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include

14#define inf (1<<30)

15#define il inline

16#define rg register

17#define ll long long

18#define c(t,i) ( t*(n+2)+i )

19#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)

2021

using

namespace

std;

2223

struct edgeg[1000010

];24

25int head[100010],d[100010],q[100010],p[100010],r[100010],s[1010][1010],n,m,k,s,t,flow,num=1;26

27 il int

gi()

3132 il void insert(rg int

from,rg int to,rg int cap),head[from]=num; return

; }33

34 il int bfs(rg int s,rg int

t)44}45

}46return0;

47}4849 il int dfs(rg int x,rg int t,rg int

a)58}59

if (!flow) d[x]=-1; return

flow;60}

6162 il int maxflow(rg int s,rg int t)

6364 il void

work()72}

73 insert(s,n+1,k),insert(n+1,s,0

);74

for (rg int ans=1;ans<=(k+2)*(n+2);++ans)

80 insert(c(ans,(n+2)),t,inf),insert(t,c(ans,(n+2)),0

);81

if (maxflow(s,t)==k)82}

83 printf("

0"); return;84

}8586int

main()

CTSC1999 網路流24題 家園

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

CTSC1999 網路流24題 星際轉移

輸入檔案 home.in輸出檔案 home.out簡單對比 時間限制 1 s 記憶體限制 128 mb 由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未 知的原因,地球環境發生了連鎖崩...

CTSC1999 網路流24題 補丁VS錯誤

題目 洛谷p2761 vijos p1019 codevs1239 codevs2218。題目大意 有n個錯誤,m個不同的補丁。對於乙個補丁,有兩個不同的字串描述。具體如下 如果當前錯誤包含第乙個字串中 的所有錯誤,且不包含第乙個字串中 的所有錯誤,則可以用這個補丁。使用這個補丁將修復第二個字串中 ...