洛谷 P1251 餐巾計畫問題 (網路流24題)

2021-09-12 00:09:55 字數 1212 閱讀 9755

題目:餐巾計畫問題

思路:拆點,每天拆成收到乾淨餐巾和送出髒餐巾兩部分。

把源點和送餐巾的點連邊,收到餐巾的點和匯點連邊,皆是流量w,費用f。

把每一天收到餐巾和送出餐巾年連邊,流量inf,費用0。

再按照洗和買的條件連邊。

跑費用流即可。

**:

#include

using

namespace std;

#define maxn 5000

#define maxm 1000000

#define read(x) scanf("%d",&x)

#define ll long long

#define inf (1<<30)

struct edge

edge

(int uu,

int vv,

int ww,ll ff)};

int n;

edge e[maxm+5]

;int h[maxn+5]

,nxt[maxm+5]

,cnt=-1

;int p,t1,p1,t2,p2;

void

add(

int u,

int v,

int w,ll f)

void

readin()

read

(p),

read

(t1)

,read

(p1)

,read

(t2)

,read

(p2)

;for

(int i=

1;i<=n;i++)}

ll dist[maxn+5]

;int pre[maxn+5]

;int vis[maxn+5]

,maxw[maxn+5]

;queue<

int> que;

bool

spfa()

}}if(dist[

2*n+1]

!=inf)

return

true

;return

false;}

void

update()

}ll dinic()

return ans;

}int

main()

洛谷 P1251 餐巾計畫問題

吃什麼 先說建圖 經典構圖題。將每一天拆成兩個點i,i 加如下6條邊 s i,r i,p 在第 i 天可以買至多ri 個餐巾,每塊 p 分 i t,r i,0 第i 天要用ri 塊餐巾 s i ri,0 第 i 天用剩的ri 塊舊餐巾 i i m,f 第 i 天的舊餐巾送到快洗部,每塊 f分 i i...

洛谷 P1251餐巾計畫問題 題解

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

P1251 餐巾計畫問題

題面 一道特別棒的費用流好題,思路非常巧妙 對於每一天,我們分為早上和晚上兩個節點 每天早上會消耗 r i 條乾淨的毛巾,可以視為流向匯點,所以我們向匯點連一條流量為 r i 費用為 0 的邊 每天晚上會產生 r i 條髒毛巾,可以視為從源點流出,所以我們從源點連一條流量為 r i 費用為 0 的邊...