題目描述
由於人類對自然資源的消耗,人們意識到大約在 2300 年之後,地球就不能再居住了。
於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,
地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。
現有 n n
n 個太空站位於地球與月球之間,且有 m m
m 艘公共運輸太空船在其間來回穿梭。
每個太空站可容納無限多的人,而每艘太空船 i i
i 只可容納 hi h_ih
i 個人。每艘太空船將周期性地停靠一系列的太空站,
例如: \
表示該太空船將周期性地停靠太空站 134134134 …
每一艘太空船從乙個太空站駛往任一太空站耗時均為 1 11。
人們只能在太空船停靠太空站(或月球、地球)時上、下船。
初始時所有人全在地球上,太空船全在初始站。
試設計乙個演算法,找出讓所有人盡快地全部轉移到月球上的運輸方案。
輸入格式
檔案第 1 1
1 行有 3 3
3 個正整數 n n
n(太空站個數)、m m
m(太空船個數)和 k k
k(需要運送的地球上的人的個數)。
接下來的 m m
m 行給出太空船的資訊。第 i+1 i + 1i+
1 行說明太空船 i ii。
第 1 1
1 個數表示 i i
i 可容納的人數 hi h_ih
i,第 2 2
2 個數表示 i i
i 乙個週期停靠的太空站個數 r r
r,(1≤r≤n+2 1 \leq r \leq n + 21≤
r≤n+
2),隨後 r r
r 個數是停靠的太空站的編號 \_1, _2, \ldots, _r \}
,地球用 0 0
0 表示,月球用 −1 -1−1
表示。時刻 0 0
0 時,所有太空船都在初始站,然後開始執行。在時刻 1,2,3,… 1, 2, 3, \ldots1,
2,3,
… 等正點時刻各艘太空船停靠相應的太空站。
人只有在 0,1,2… 0, 1, 2 \ldots0,
1,2…
等正點時刻才能上下太空船。
輸出格式
輸出全部人員安全轉移所需的時間。如果無解,則輸出 0 00。
樣例樣例輸入
2 2 1
1 3 0 1 2
1 3 1 2 –1
樣例輸出
5
建圖好複雜,看了題解才弄懂,第一次做分層圖網路流。
直接求天數是求不出來的,只能從小到大列舉天數,因為每次都是在前一天的殘留網路基礎上加點加邊所以複雜度不高。
我們把每天的每個太空站以及地球和月亮都作為乙個點,對於第i天,源點s和i*n+2也就是地球建一容量為inf的邊,
i*n+1也就是月亮和匯點建容量為inf的邊,而對於每個太空船前一天所在太空站(i-1)*n+a[i][(j-1)%len[i]]和今天所在太空站
i*n+a[i][j%len[i]]建一容量為太空船容量的邊,從小到大列舉天數,知道每天的最大流之和大於等於k就是最小天數了。
#include#include#include#includeusing namespace std;
const int maxm = 1000000;
const int inf = 1e9 + 7;
struct node
edge[maxm];
int head[maxm], dis[maxm], cur[maxm], flag[maxm];
int a[105][105], len[maxm], b[105];
int cnt, s, t, n, m;
void init()
void add(int u, int v, int w)
int bfs()
} }if (dis[t] == -1) return 0;
return 1;
}int dfs(int u, int flow)
} }return 0;
}int dinic()
return ans;
}int main()
} int ans = 0, sum = 0;
while (1)
}sum += dinic();
if (sum >= k) break;
ans++;
} if (ans == 100) printf("0\n");
else printf("%d\n", ans);
return 0;
}
網路流24題 星際轉移問題
這個問題的難點在於如何表示時間的流逝很容易 想到源點 是地球,然後中間 一串的空 間站,最 後連向匯 點月 球很容易想到源點是地球,然後中間一串的空間站,最後連向匯點月球 很容易想到源 點是地球 然後中 間一串的 空間站,最後連向 匯點月球空間 站間各自 連邊,流 量是飛船 的容 量空間站間各自連邊...
網路流24題 星際轉移問題
description 由於人類對自然資源的消耗,人們意識到大約在 2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有 n 個太空站位於地球與月球之間,且有 ...
網路流24題之星際轉移問題
一開始以為跑費用流,後來看了題解才知道可以按天建圖。1.從源點向每一天的地球鏈結一條inf 2.從每一天的月亮向匯點鏈結一條inf 4.針對每一艘飛船,獲取其上一天的位置,再獲取這一天的位置,在這兩個點之間連一條容量為飛船滿載人數的流 每次新加一天然後跑到最大流超過k即可 至於無解的情況只要當ans...