傳送門
乙個餐廳在相繼的 nnn 天裡,每天需用的餐巾數不盡相同。假設第 iii 天需要 rir_iri塊餐巾( i=1,2,…,n)。餐廳可以購買新的餐巾,每塊餐巾的費用為 ppp 分;或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分;或者送到慢洗部,洗一塊需 nnn 天(n>mn>mn>m),其費用為 sss 分(s這個題目是乙個費用流的題目
首先我們要把每一天拆成早上和晚上兩個點
連邊如下:
建好了圖之後,就可以直接套上費用流的模板跑最大流了
#include
#include
#include
using
namespace std;
#define re register
#define gc getchar()
#define ll long long
#define il inline
il ll read()
while
(ch>=
'0'&&ch<=
'9')
return x*f;
}inline ll min
(ll a,ll b)
const ll inf=(1
<<29)
,n=100010
;struct node e[n]
;ll h[n]
,cnt=
1,n,s,t;
inline
void
add(ll u,ll v,ll w,ll c)
,h[u]
=cnt;
e[++cnt]
=(node)
,h[v]
=cnt;
}#define qxx(u) for(ll i=h[u],y;y=e[i].to,i;i=e[i].next)
ll dis[n]
,vis[n]
,pre[n]
,f[n]
,maxf,minc,m;
ll spfa()
}}return pre[t]==-
1?-1
:f[t];}
void dinic (
) maxf+
=in;
minc+
=in*dis[t];}
cout<}int
main()
ll m=
read()
,t1=
read()
,m1=
read()
,t2=
read()
,m2=
read()
;for
(ll i=
1; i<=n; i++
)dinic()
;return0;
}
題解 餐巾計畫問題
orz argent 一定要注意不要調到題目裡的坑里來了,要記得脫離實際 大霧 建模方法 我覺得沒什麼好講的,真的是靈感問題,此外,這個問題可以直接無源匯上下界網路流。但是我不會 graph lr 淨1 w r,c 0 t 淨2 w r,c 0 t 淨3 w r,c 0 t 淨4 w r,c 0 t...
餐巾計畫問題
乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用 為p分 或者把舊餐巾送到快洗部,洗一塊需 m天,其費用為 f 分 或者送到慢洗部,洗一塊需 n 天 n m 其費用為 s這道題是一道最小費用最大流的題目,然而有一些神犇...
餐巾計畫問題
乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f p 如m l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。3 把餐巾送到慢洗部,洗一塊需n天 n m ...