BZOJ 2424 訂貨 最小費用流

2022-07-17 10:57:11 字數 2596 閱讀 5939

題目大意:

某公司估計市場在第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...