bzoj2426 貪心 工廠選址

2021-08-16 10:30:13 字數 1816 閱讀 3566

description

某地區有m座煤礦,其中第i號礦每年產量為ai噸,現有火力發電廠乙個,每年需用煤b噸,每年執行的固定費用(包括折舊費,不包括煤的運費)為h元,每噸原煤從第i號礦運到原有發電廠的運費為ci0(i=1,2,…,m)。

現規劃新建乙個發電廠,m座煤礦每年開採的原煤將全部供給這兩座發電廠。現有n個備選的廠址。若在第j號備選廠址建新廠,每年執行的固定費用為hj元。每噸原煤從第i號礦運到j號備選廠址的運費為cij(i=1,2,…,m;j=1,2,…,n)。

試問:應把新廠廠址選取在何處?m座煤礦開採的原煤應如何分配給兩個發電廠,才能使每年的總費用(發電廠執行費用與原煤運費之和)為最小。

input

第1行: m b h n

第2行: a1 a2 … am (0<=ai<=500, a1+a2+…+an>=b)

第3行: h1 h2 … hn (0<=hi<=100)

第4行: c10 c20 … cm0 (0<=cij<=50)

第5行: c11 c21 … cm1

第n+4行:c1n c2n … cmn

output

第1行:新廠址編號,如果有多個編號滿足要求,輸出最小的。

第2行:總費用

sample input

4 2 7 9

3 1 10 3

6 3 7 1 10 2 7 4 9

1 2 4 3

6 6 8 2

4 10 8 4

10 2 9 2

7 6 6 2

9 3 7 1

2 1 6 9

3 1 10 9

4 2 1 8

2 1 3 4

sample output

8

hint

對於所有資料, n<=50, m<=50000, b<=10000

題解

這題題意超級坑

我本來以為,是兩個發電廠都是b噸礦的。。然後開心地敲了個費用流然後樣例都過不去

結果第乙個發電廠只要b噸 其他全部運去第二個發電廠???

開心的tle

那這樣還打啥子費用流。。直接貪心啊,反正你要麼運去第乙個要麼運去第二個

列舉發電廠位置,然後存一下每個礦到第二個廠與到第乙個廠的差,按差從大到小排個序。差越大當然越要全部運去第乙個廠啦。

運不來第乙個就只能去第二個咯,貪個心就行了

告誡自已一定要細看題意

#include

#include

#include

#include

#include

using namespace std;

struct node

a[51000];

bool cmp(node n1,node n2)

intm,b,h,n;

int u[51000],v[51000];

int mp[51][51000];

int mcost,mout;

int main()

else

}sum+=h;sum+=v[i];

if(sumprintf("%d\n%d\n",mout,mcost);

return

0;}

bzoj 2426 HAOI2010 工廠選址

某地區有m座煤礦,其中第i號礦每年產量為ai噸,現有火力發電廠乙個,每年需用煤b噸,每年執行的固定費用 包括折舊費,不包括煤的運費 為h元,每噸原煤從第i號礦運到原有發電廠的運費為ci0 i 1,2,m 現規劃新建乙個發電廠,m座煤礦每年開採的原煤將全部供給這兩座發電廠。現有n個備選的廠址。若在第j...

貪心 bzoj 3008 象棋

本題的難點是 移動過程中不能出現多顆棋子同時在某一格的情況 事實上,可以忽略此條件,因為棋子是相同的,我們可以用合法的等效方案替代一棋子越過另一棋子的情況 a b c三格,a能在一步走到b,b也能在一步走到c。在a的棋子需要走到存在棋子的b,接著走到c。此情形我們可以看成在b的棋子先走到c,接著在a...

bzoj4029 貪心 定價

description 在市場上有很多商品的定價類似於 999 元 4999 元 8999 元這樣。它們和 1000 元 5000 元和 9000 元並沒有什麼本質區別,但是在心理學上會讓人感覺便宜很多,因此也是商家常用的 策略。不過在你看來,這種 十分荒謬。於是你如此計算乙個 p p 為正整數 的...