題目大意:
某公司估計市場在第i個月對某產品的需求量為ui,已知在第i月該產品的訂貨單價為di,上個月月底未銷完的單位產品要付存貯費用m,假定第一月月初的庫存量為零,第n月月底的庫存量也為零,問如何安排這n個月訂購計畫,才能使成本最低?每月月初訂購,訂購後產品立即到貨,進庫並**市場,於當月被售掉則不必付存貯費。假設倉庫容量為s。
思路:
直接建圖即可。
對於每個月i,從s->i 容量為inf,因為可以購買任意數量的產品,費用為d[i],為當月售價
從i->t容量為u[i],因為需要**這麼多,費用為0,因為**不需要費用。
i->i+1 容量為s,因為倉庫容量為s,費用為m,因為上月留下來的單位產品的費用為m
1 #include2#define ios ios::sync_with_stdio(false);//
不可再使用scanf printf
3#define max(a, b) ((a) > (b) ? (a) : (b))//
禁用於函式,會超時
4#define min(a, b) ((a) < (b) ? (a) : (b))
5#define mem(a) memset(a, 0, sizeof(a))
6#define dis(x, y, x1, y1) ((x - x1) * (x - x1) + (y - y1) * (y - y1))
7#define mid(l, r) ((l) + ((r) - (l)) / 2)
8#define lson ((o)<<1)
9#define rson ((o)<<1|1)
10#define accepted 0
11#pragma comment(linker, "/stack:102400000,102400000")//
棧外掛程式12
using
namespace
std;
13 inline int
read()
1417
while (ch>='
0'&&ch<='9')
18return x*f;19}
2021 typedef long
long
ll;22
const
int maxn = 100 + 10;23
const
int mod = 1000000007;//
const引用更快,巨集定義也更快
24const
int inf = 1e9 + 7;25
const
double eps = 1e-6;26
27struct
edge
2831
};32 vectore;
33 vectorg[maxn];
34int a[maxn];//
找增廣路每個點的水流量
35int p[maxn];//
每次找增廣路反向記錄路徑
36int d[maxn];//
spfa演算法的最短路
37int inq[maxn];//
spfa演算法是否在佇列中
38int
n, m;
39void init(int
n)40
44void addedge(int u, int v, int c, int
cost)
4552
bool bellman(int s, int t, int& flow, long
long &cost)
53//
bellman 演算法入隊78}
79}80}
81if(d[t] == inf)return
false;//
找不到增廣路
82 flow += a[t];//
最大流的值,此函式引用flow這個值,最後可以直接求出flow
83 cost += (long
long)d[t] * (long
long)a[t];//
距離乘上到達匯點的流量就是費用
84for(int u = t; u != s; u = e[p[u]].u)//
逆向存邊
8589
return
true;90
}91int mincostmaxflow(int s, int t, long
long &cost)
9298
intu[maxn], b[maxn];
99int
main()
100110
for(int i = 1; i < n; i++)addedge(i, i + 1
, s, m);
111 ll cost = 0
;112 mincostmaxflow(0, n + 1
, cost);
113 printf("
%lld\n
", cost);
114return
accepted;
115 }
haoi2010 訂貨 最小費用流
這道題oj上的標籤是動態規劃,但我想不出來動態規劃怎麼搞,空間不爆,時間也要爆的 好的,不扯淡,此題正常做法是最小費用流 這道題我寫了兩遍,為什麼呢?原因是第一次寫的時候,不會寫費用流,又恰好沒帶書,所以擱置了 第二次又寫到這道題了,有點生氣,一鼓作氣學了費用流,緊跟著敲了這道題 也算一道費用流模板...
2424 HAOI2010 訂貨 費用流
某公司估計市場在第i個月對某產品的需求量為ui,已知在第i月該產品的訂貨單價為di,上個月月底未銷完的單位產品要付存貯費用m,假定第一月月初的庫存量為零,第n月月底的庫存量也為零,問如何安排這n個月訂購計畫,才能使成本最低?每月月初訂購,訂購後產品立即到貨,進庫並 市場,於當月被售掉則不必付存貯費。...
最小費用流
include include define maxn 61 define maxv maxn maxn 2 1 define maxe maxv 5 define oo 2147483647 define min a,b a b b a define maxq maxe using namespa...