中學高階本 網路流24題 餐巾計畫

2022-05-08 04:39:08 字數 1455 閱讀 3882

把每天分為二分圖兩個集合中的頂點

xi,yi

,建立附加源s匯

t。

1、從s

向每個xi

連一條容量為

ri,費用為

0的有向邊。

表示第i天還剩ri條餐巾。
2

、從每個yi向

t連一條容量為

ri,費用為

0的有向邊。

控制最大流

3、從s

向每個yi

連一條容量為無窮大,費用為

p的有向邊。

表示買餐巾

4

、從每個xi向

xi+1(i+1<=n)

連一條容量為無窮大,費用為

0的有向邊。

表示第i天剩的餐巾可以留給第i+

1天。

5

、從每個xi向

yi+m(i+m<=n)

連一條容量為無窮大,費用為

f的有向邊。

表示快洗

6

、從每個xi向

yi+n(i+n<=n)

連一條容量為無窮大,費用為

s的有向邊。

表示慢洗

然後就求最小費用最大流就可以了

1 #include

2 #include3 #include4 #include5 #include6 #include7 #include

8 #include9 #include10 #include11 #include12 #include13 #include14

#define inf 1999999999

15using

namespace

std;

16struct

datae[2610

];19

int head[410],edge=-1,dis[410],vis[410],pre[410

];20

void add(int

from,int to,int w,int

c)27 inline int spfa(int s,int

t)43}44

}45if(dis[t]==zd) return0;

46else

return1;

47}48 inline int end(int s,int

t)58

return

ans;59}

60 inline int solve(int s,int

t)65

intmain()

6682 printf("%d"

,solve(s,t));

83return0;

84 }

網路流 24 題 餐巾計畫

這道題目很關鍵的一點就是,要明白用的餐巾和洗的餐巾是兩個系統。所以我們把每一天所用餐巾直接用乙個源點和匯點連線。解決第乙個系統。此時可能會洗餐巾,所以我們另起乙個點,從源點每一天引出髒的餐巾,數目依然是當天所用的餐巾數量,然後從這個點連線到m天後的第一系統的點和n天後第一系統的點,費用分別為f和s,...

網路流24題 餐巾計畫

乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f p 如m l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。3 把餐巾送到慢洗部,洗一塊需n天 n m ...

網路流24題 餐巾計畫(費用流)

乙個餐廳在相繼的 n 天裡,每天需用的餐巾數不盡相同。假設第 i天需要 ri 塊餐巾。餐廳可以購買新的餐巾,每塊餐巾的費用為 p 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 n 天,其費用為 s 分 s f 每天結束時,餐廳必須決定將多少塊髒的餐巾送到快...