最小費用最大流
建圖方式真麻煩 真是網路流裡的泥石流清流啊
老規矩 先建立超源點s和超匯點e
對於每一天 , 我們可以拆成2個點 , 乙個點稱為1號連線s , 另外乙個稱為2號連線e , 流量都是當天餐巾 , 費用0
由於我們可以不洗餐巾所以可以直接連線下一天 (倆一號點連線), 費用為0 , 流量inf(注意邊界)
我們可以買餐巾所以可以直接買直接s連向2號點 流量為inf 費用為**
還可以洗餐布 , 把每天與洗完之後(i + n + day)的那一天的二號點相連 費用為洗餐布費用 流量inf(注意邊界)
#include
#include
#include
#include
typedef
int trueint;
#define int long long
#define inc(i) (i = -(~i))
#define dec(i) (i = ~(-i))
using
namespace
std;
namespace fast
inline
int read()
}using
namespace fast;
const
int n = 20000 + 7 , m = 2000000 + 7 , inf = 0x3f3f3f3f;
int n , fast_wash_cost , fast_wash_day , slow_wash_cost , slow_wash_day , everyday[n] , buy;//in
int head[n] , node[m] , w[m] , next[m] , tot = 1 , s , e , co[m];//map
int min_cost , dep[n];//others
inline
void add(int u , int v , int flow , int cost)
inline
void build_map()
}struct queue
inline
int top()
inline
void push(int x)
inline
bool full()
inline
void pop()
}q;bool inq[n] , book[n];
inline
bool spfa()}}
}// printf("dep[e] = %lld\n" , dep[e]);
return dep[e] != big;
}inline
int dfs(int u , int lastc)}}
// printf("now = %lld\n" , now);
return now;
}inline
void max_flow()
}}trueint main()
網路流24題10 餐巾計畫問題
題面戳我 題面描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 fm 費用需s分 s輸出樣例 1 64說明 n 2000 ri 10000000 p,f,s 10000 ...
網路流24題 13 餐巾計畫問題
寫網路流寫的頭昏腦漲qaq大概還是太菜了 比較有趣的建圖題 對於每乙個點拆點拆成早晨和晚上分別為 i 和 i 1.s i r,p 每天早晨可以買最多r條新餐巾 一條p分 2.s i r,0 每天用剩下r條髒餐巾 沒有代價 3.i t r,0 每天要用r條乾淨餐巾 沒有代價 4.i i m inf,f...
線性規劃與網路流24 餐巾計畫問題
題目鏈結點這裡 犯了個智障錯誤,找錯找了一上午,最小費用問題,建模對於我這種菜雞有點難想到。大概這樣建模 把第i天,分為2個點 xi和yi 1 從s向每個xi連一條容量為ri,費用為0的邊。2 從每個yi向t連一條容量為ri,費用為0的邊。3 從s向每個yi連一條容量為無窮大,費用為p的邊。4 從每...