time limit: 10 sec memory limit: 128 mb
submit: 6188 solved: 2800
[submit][status][discuss]
l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內
陸地區(乾燥少雨),l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象
部門的**,被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於
地形的不同,在不同工廠建立倉庫的費用可能是不同的。第i個工廠目前已有成品pi件,在第i個工廠位置建立倉庫
的費用是ci。對於沒有建立倉庫的工廠,其產品應被運往其他的倉庫進行儲藏,而由於l公司產品的對外銷售處設
置在山腳的工廠n,故產品只能往山下運(即只能運往編號更大的工廠的倉庫),當然運送產品也是需要費用的,
假設一件產品運送1個單位距離的費用是1。假設建立的倉庫容量都都是足夠大的,可以容下所有的產品。你將得到
以下資料:1:工廠i距離工廠1的距離xi(其中x1=0);2:工廠i目前已有成品數量pi;:3:在工廠i建立倉庫的費用
ci;請你幫助l公司尋找乙個倉庫建設的方案,使得總的費用(建造費用+運輸費用)最小。
第一行包含乙個整數n,表示工廠的個數。接下來n行每行包含三個整數xi, pi, ci, 意義如題中所述。
僅包含乙個整數,為可以找到最優方案的費用。
30 5 10
5 3 100
9 6 10
32在工廠1和工廠3建立倉庫,建立費用為10+10=20,運輸費用為(9-5)*3 = 12,總費用32。如果僅在工廠3建立倉庫,建立費用為10,運輸費用為(9-0)*5+(9-5)*3=57,總費用67,不如前者優。
【資料規模】
對於100%的資料, n ≤1000000。 所有的xi, pi, ci均在32位帶符號整數以內,保證中間計算結果不超過64位帶符號整數。
bzoj的資料似乎xi, pi, ci需要ll
設:a[i]表示p[i]字首和
b[i]表示x[i]*p[i]字首和
通過觀察可以寫出dp方程:
f[i]=min
這裡就涉及到斜率優化的問題,設k
而j比k更優的情況為:
\[\frac
因此我們在j處設立乙個倉庫
1 #include2 #include3using
namespace
std;45
#define ll long long
6const
int maxn=1000005;7
8int
n,l,r;
9ll x[maxn],p[maxn],c[maxn];
10ll f[maxn],a[maxn],b[maxn];
11int
q[maxn];
1213
double slope(int i,int
j)14
1718
intmain()
1927
for(int i=1;i<=n;i++)
2835 printf("
%lld
",f[n]);
36return0;
37 }
1096 ZJOI2007 倉庫建設
description l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象 部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些...
1096 ZJOI2007 倉庫建設
l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象 部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於...
bzoj 1096 ZJOI2007 倉庫建設
time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...