P1251餐廳計畫問題(最小費用最大流)

2022-06-18 02:36:12 字數 2238 閱讀 1790

乙個餐廳在相繼的 nn 天裡,每天需用的餐巾數不盡相同。假設第 ii 天需要 r_iri​塊餐巾( i=1,2,...,n)。餐廳可以購買新的餐巾,每塊餐巾的費用為 pp 分;或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分;或者送到慢洗部,洗一塊需 nn 天(n>mn>m),其費用為 ss 分(ss每天結束時,餐廳必須決定將多少塊髒的餐巾送到快洗部,多少塊餐巾送到慢洗部,以及多少塊儲存起來延期送洗。但是每天洗好的餐巾和購買的新餐巾數之和,要滿足當天的需求量。

試設計乙個演算法為餐廳合理地安排好 nn 天中餐巾使用計畫,使總的花費最小。程式設計找出乙個最佳餐巾使用計畫。

由標準輸入提供輸入資料。檔案第 1 行有 1 個正整數 nn,代表要安排餐巾使用計畫的天數。

接下來的一行是餐廳在相繼的 nn 天裡,每天需用的餐巾數。

最後一行包含5個正整數p,m,f,n,sp,m,f,n,s。pp 是每塊新餐巾的費用; mm 是快洗部洗一塊餐巾需用天數; ff 是快洗部洗一塊餐巾需要的費用; nn 是慢洗部洗一塊餐巾需用天數; ss 是慢洗部洗一塊餐巾需要的費用。

將餐廳在相繼的 n 天裡使用餐巾的最小總花費輸出

/*

* p1251餐巾計畫問題

* 題意:

* 乙個餐廳在相繼的n天裡,每天需用的餐巾數不同。

* 假設第i天需要ri塊餐巾。

* 餐廳可以購買新的餐巾,每塊餐巾的費用為p分。

* 或者把舊餐巾送到快洗部,洗一塊需要m天,其費用為f分。

* 或者送到慢洗部,洗一塊需要n天,其費用為s分。

* 每次結束時,餐廳必須決定將多少塊髒的餐巾送到快洗部,多少塊髒的餐巾送到慢洗部,以及多少塊儲存起來延期送洗,

* 但是每天洗好的餐巾和購買的新餐巾數之和,要滿足當天的需求量。

* 輸出在n天裡使用餐巾的最小總花費。

* 題解:

* 最小費用最大流。

* 首先,拆點,把每天拆成早上和晚上。每天晚上會受到髒餐巾,每天早上又有乾淨的餐巾。

* 1.從源點向每天晚上連一條流量為當天所用餐巾x,費用為0的邊,表示每天晚上從起點獲得x條髒餐巾。

* 2.從每一天早上向匯點連一條流量為當天所用餐巾x,費用為0的邊,每天白天,表示從匯點提供x條乾淨的餐巾,流滿時表示第i天的餐巾夠用。

* 3.每一天晚上向第二天晚上連一條流量為inf,費用為0的邊,表示每天晚上可以將髒餐巾留到第二天晚上。

* 4.每一天晚上向這一天+快洗所用天數那一天早上連一條流量為inf,費用為快洗所用錢數的邊,表示每天晚上可以送去快洗部,在第i+t1天早上收到餐巾。

* 5.同理,每一天晚上向這一天+慢洗所用天數的那一天早上連一條流量為inf,費用為慢洗所用錢數的邊,表示每天晚上可以送去慢洗部,在第i+t2天早上收到餐巾。

* 6.從起點向每天早上連一條流量為inf,費用為購買餐巾所用錢數的邊,表示每天早上可以購買餐巾。 */

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e5+100

;const ll inf=1e18;

inthead[maxn];

inttot;

ints,t;

ll dis[maxn];

intpre[maxn];

intlst[maxn];

ll flow[maxn];

intvisit[maxn];

ll maxflow;

ll mincost;

struct

node edge[maxn];

void addedge (int u,int

v,ll flow,ll dis)

bool spfa (int s,int

t) }}}

return pre[t]!=-1;}

void

mcmf ()

}} int

a[maxn];

intmain ()

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

for (int i=1;i)

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

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

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

mcmf();

printf(

"%lld\n

",mincost);

}

洛谷P1251 餐巾計畫問題 最小費用最大流

一家餐廳,第 i 天需要 r i 塊餐巾,每天獲取餐巾有三種途徑 1 以 p 的費用買 2 以 f 的費用送到快洗部,並在 m 天後取出 3 以 s 的費用送到慢洗部,並在 n 天後取出 問滿足要求時的最小費用 一道非常不錯的網路流,應該不難看出是費用流。首先進行拆點,把每個點早上和晚上,然後進行連...

nefu488餐廳計畫問題(最小費用最大流)

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

網路流之最小費用最大流 P1251 餐巾計畫問題

乙個餐廳在相繼的 nn 天裡,每天需用的餐巾數不盡相同。假設第 ii 天需要 r iri 塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 pp 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 nn 天 n mn m 其費用為 ss 分 ss每...