網路流24題 餐巾計畫

2022-05-02 05:54:09 字數 1914 閱讀 8969

乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾(i=l,2,…,n)。餐廳可以從三種途徑獲得餐巾。

(1)購買新的餐巾,每塊需p分;

(2)把用過的餐巾送到快洗部,洗一塊需m天,費用需f分(f<p)。如m=l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。

(3)把餐巾送到慢洗部,洗一塊需n天(n>m),費用需s分(s<f)。

在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,多少塊送慢洗部。在每天開始時,餐廳必須決定是否購買新餐巾及多少,使洗好的和新購的餐巾之和滿足當天的需求量ri,並使n天總的費用最小。

共 3 行:

第 1 行為總天教;

第 2 行為每天所需的餐巾塊數;

第 3 行為每塊餐巾的新購費用 p ,快洗所需天數 m ,快洗所需費用 f ,慢洗所需天數 n ,慢洗所需費用 s 。

一行,最小的費用

3 3 2 4

10 1 6 2 3

資料規模:

n<=200,ri<=50

正解:費用流。這題很難啊,稍不留神就容易連錯邊。

建圖如下:第i天拆成xi和yi,源點向xi建一條容量為ri,費用為0的弧,yi向匯點建一條容量為ri,費用為0的弧。源點向yi建一條容量為inf,費用為p的弧,xi向yi+m,yi+n分別容量為1,對應費用的流。xi向xi+1建一條容量為inf,費用為0的弧。別的都還好,最後一條易錯。。

//

it is made by wfj_2048~

#include #include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf (1<<30)

#define il inline

#define rg register

#define ll long long

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

using

namespace

std;

struct edgeg[1000010

];int head[1010],dis[1010],f[1010],fa[1010],p[1010],q[1000010],n,pp,m,c,t,s,s,t,flow,cost,num=1

;il

intgi()

il void insert(rg int

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

il int bfs(rg int s,rg int

t) }

}if (dis[t]==inf) return

0; flow+=f[t],cost+=f[t]*dis[t];

for (rg int x=t;x!=s;x=fa[x]) g[p[x]].flow+=f[t],g[p[x]^1].flow-=f[t];

return1;

}il

int mcmf(rg int s,rg int t)

il void

work()

pp=gi(),m=gi(),c=gi(),t=gi(),s=gi(); insert(s,n+1,inf,pp),insert(n+1,s,0,-pp);

for (rg int i=1;i<=n;++i)

printf(

"%d\n

",mcmf(s,t)); return;}

intmain()

網路流 24 題 餐巾計畫

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

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

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

網路流24題 餐巾計畫問題

傳送門 這個題我一開始沒把tot賦值成 1,然後調了1h。然後只拿了20,看了題解才知道漏了一種情況,那就是其實餐巾是可以留到第二天的。然後就沒了。對了,忘說做法了 尷尬 其實就是拆點,分別連邊,實現題目中的三種操作,具體可以看我的 include include include include i...