傳送門
需要拆點,即把每一天拆成沒用過餐巾和和用完的餐巾(不要在意語法錯誤)
把s向每天的廢餐巾連一條費用為零,流量為r[i]的邊,表示當天產生r[i]個髒餐巾。
dayi 的髒餐巾向dayi+1的髒餐巾連一條費用為0,流量為inf的邊,表示把這一天的髒餐巾留到下一天處理
把每天的好餐巾向t連一條費用為0,流量為r[i]的邊,表示這一天用廢了r[i]條餐巾
因為快洗,慢洗總量要求相同,所以不用分開考慮。
我就和著寫了,把每天髒餐巾向洗完的天連一條費用為洗的花費,流量為inf的邊,
從s向每天新餐巾連一條流量inf,費用p的邊,表示每天都可以買新餐巾。
反遍怎麼建略。
#include#include#include#include#include#define inf 100000000
using namespace std;
int day,kuai[205],p,m,f,n,s;
int s,t;
int adj[1000],from[1000],dis[1000],flag[1000],e=2;
struct node
a[10000];
void add(int u,int v,int l,int f)
int bfs()
from[to]=i;
}} }
if(dis[t]==inf)return 0;
return dis[t];
}int dfs()
aa=t;
while(aa!=s)
return bb;
}int yjn()
int ans=0,l;
while(l=bfs())
ans+=l*dfs();
cout<
最小費用最大流 網路流24題 餐巾
傳送門 需要拆點,即把每一天拆成沒用過餐巾和和用完的餐巾 不要在意語法錯誤 把s向每天的廢餐巾連一條費用為零,流量為r i 的邊,表示當天產生r i 個髒餐巾。dayi 的髒餐巾向dayi 1的髒餐巾連一條費用為0,流量為inf的邊,表示把這一天的髒餐巾留到下一天處理 把每天的好餐巾向t連一條費用為...
餐巾計畫問題 網路流24題 最大流最小費用
一道普通的最大流最小費用的題,我們需要考慮的是這樣的情況 第i天的舊餐巾我們該怎麼處理?我們知道可以退後m天去快洗,然後在第i m天再次使用它花費f元,另外的方法就是在推後n天去慢洗,花費的s元,但是我們要是遇到剛好那天在這段區間內的怎麼辦,我們不如就加上一組無條件推後一天的情況。那麼,我們可以這麼...
網路流 最小費用最大流
q 為什麼突然想搞網路流?a 迫於tham 蛤mu的淫威 用最短路演算法求出s t的路徑 把路徑要摳出來,而且每條邊要有容量 算一下路徑裡面的可以流過的最大的流量 發現此時的花費就是 dis t flow 累加即可.重複1 3直到不能夠到達t.include include include incl...