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
s --w=r,c=p--> 淨1
s --w=r,c=p--> 淨2
s --w=r,c=p--> 淨3
s --w=r,c=p--> 淨4
髒1--w=r,c=0--> 髒2
髒2--w=r,c=0--> 髒3
髒3--w=r,c=0--> 髒4
s --w=r,c=0--> 髒1
s --w=r,c=0--> 髒2
s --w=r,c=0--> 髒3
s --w=r,c=0--> 髒4
髒1 --w=inf,c=s or m --> 淨2
髒1 --w=inf,c=s or m --> 淨2
保證淨到\(t\)一定滿流即可。
//@winlere
#include#include#include#include#includeusing namespace std; typedef long long ll;
inline int qr()
typedef const int& cont;
const int maxn=4e3+5;
struct e
e(cont a,cont b,cont c,cont d)
}e[maxn<<4|1];
int head[maxn];
int cnt=1;
int t,s;
const int inf=0x3f3f3f3f;
queue< int > q;
inline void add(cont fr,cont to,cont w,cont c,cont f=1)
ll d[maxn];
int fl[maxn];
int last[maxn];
int in[maxn];
int n;
inline ll mincost()}}
if(fl[t]==0)break;
ret+=d[t]*fl[t];
for(register int t=t;t!=s;t=e[last[t]^1].to)
e[last[t]].w-=fl[t],e[last[t]^1].w+=fl[t];
}return ret;
}int r[maxn];
int main()
int p,m,f,n,s;
p=qr();m=qr();f=qr();n=qr();s=qr();
for(register int t=1;t<=n;++t)
printf("%lld\n",mincost());
return 0;
}
題解 餐巾計畫問題
傳送門 乙個餐廳在相繼的 nnn 天裡,每天需用的餐巾數不盡相同。假設第 iii 天需要 rir iri 塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 ppp 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 nnn 天 n mn mn m ...
餐巾計畫問題
乙個餐廳在相繼的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 ...