這個問題的難點在於如何表示時間的流逝很容易
想到源點
是地球,
然後中間
一串的空
間站,最
後連向匯
點月
球很容易想到源點是地球,然後中間一串的空間站,最後連向匯點月球
很容易想到源
點是地球
,然後中
間一串的
空間站,
最後連向
匯點月球空間
站間各自
連邊,流
量是飛船
的容
量空間站間各自連邊,流量是飛船的容量
空間站間各自
連邊,流
量是飛船
的容量
這樣跑最大流跑出來的其實是一天能到的最多的人,不能滿足要求
假 如我
們再開一
條上面的
鏈呢?也
許就能表
示兩天的
最大流了
。假如我們再開一條上面的鏈呢?也許就能表示兩天的最大流了。
假如我們再開
一條上面
的鏈呢?
也許就能
表示兩天
的最大流
了。 所以思
路大概有
點輪廓,
我們需要
的是乙個
類似分層
圖的東西
所以思路大概有點輪廓,我們需要的是乙個類似分層圖的東西
所以思路大概
有點輪廓
,我們需
要的是一
個類似分
層圖的東
西 按 照時
間分層,
就能表示
x天的最
大流
按照時間分層,就能表示x天的最大流
按照時間分層
,就能表
示x天的
最大流
每 天的
圖都是地
球−空間
站−月球
每天的圖都是地球-空間站-月球
每天的圖都是
地球−空
間站−月
球 那 麼源
點向每一
天的地球
連邊,容
量inf
那麼源點向每一天的地球連邊,容量inf
那麼源點向每
一天的地
球連邊,
容量in
f 每 一天
的月球向
匯點連邊
,容量i
nf
每一天的月球向匯點連邊,容量inf
每一天的月球
向匯點連
邊,容量
inf
對 於每
個飛船,
前一天的
位置向後
一天位置
連邊,表
示時間的
流逝,容
量是飛船
容量
對於每個飛船,前一天的位置向後一天位置連邊,表示時間的流逝,容量是飛船容量
對於每個飛船
,前一天
的位置向
後一天位
置連邊,
表示時間
的流逝,
容量是飛
船容量
對 於每
天的空間
站向下一
天的這個
空間站連
邊,容量
inf,
表示人可
以停在這
個空間站
對於每天的空間站向下一天的這個空間站連邊,容量inf,表示人可以停在這個空間站
對於每天的空
間站向下
一天的這
個空間站
連邊,容
量inf
,表示人
可以停在
這個空間
站 列舉答案跑最大流即可
#include using namespace std;
const int inf=1e9;
const int maxn=2e5+10;
struct edged[maxn]; int head[maxn],cnt=1,ans;
void add(int u,int v,int flow),head[u]=cnt;
d[++cnt]=(edge),head[v]=cnt;
}int dis[maxn],p[maxn],num[maxn],g[209][209],pre[maxn];
int n,m,k,s,t;
int find(int x)
void join(int q,int w)
bool bfs()
} }return false;
}int dinic(int u,int flow)
if( res==0 ) break;
} return flow-res;
}int main()
} if( find(n+1)!=find(n+2) )
int kk=0;
for(ans=1;;ans++)
while( bfs() ) kk+=dinic(s,inf);
if( kk>=k )
for(int i=1;i<=n+1;i++)
add( (ans-1)*(n+1)+i,ans*(n+1)+i,inf );//在這個站停下來
}}
網路流24題 星際轉移問題
description 由於人類對自然資源的消耗,人們意識到大約在 2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有 n 個太空站位於地球與月球之間,且有 ...
網路流 24 題 星際轉移
題目描述 由於人類對自然資源的消耗,人們意識到大約在 2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有 n n n 個太空站位於地球與月球之間,且有 m m...
網路流24題之星際轉移問題
一開始以為跑費用流,後來看了題解才知道可以按天建圖。1.從源點向每一天的地球鏈結一條inf 2.從每一天的月亮向匯點鏈結一條inf 4.針對每一艘飛船,獲取其上一天的位置,再獲取這一天的位置,在這兩個點之間連一條容量為飛船滿載人數的流 每次新加一天然後跑到最大流超過k即可 至於無解的情況只要當ans...