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位帶符號整數。
正解:dp+斜率優化
解題報告:
上午校內自測考我的題目,我就可以在機房裡面刷題,嘿嘿嘿。
開始沒看到只能往編號大的運輸這個條件,結果一直沒想出來樸素dp怎麼寫...
樸素的式子就是:$$^p[k]} - \sum_^xk*pk } )+ ci$$
這是n^2的做法,還是那句話,斜率優化的dp式子長得就是一副很可推的樣子,不妨設$$^x[k]*p[k]}$$
$$^p[k]}$$
那麼式子變成了: $$$$
假設存在k
$$$$
化簡可知:$$$$
把右邊除過去,就會發現
$$ < xi }$$
哇,這和昨天做的題目好像啊!這就是乙個斜率式嘛
單調佇列維護斜率單增的下凸包,發現隊首不滿足上式了就pop掉,隊尾不滿足同樣pop。
1//it is made by ljh2000
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include
13using
namespace
std;
14 typedef long
long
ll;15
const
int inf = (1
<<30
);16
const
int maxn = 1000011;17
intn,head,tail;
18int
x[maxn],p[maxn],c[maxn],dui[maxn];
19ll f[maxn],s[maxn],sp[maxn];
2021 inline int
getint()
2227 inline ll count(int x,int y)
28 inline void
work()
37 printf("
%lld
",f[n]);38}
3940
intmain()
41
bzoj 1096 ZJOI2007 倉庫建設
time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...
bzoj 1096 ZJOI2007 倉庫建設
l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於地形...
bzoj1096 ZJOI2007 倉庫建設
1a系列。用f i 表示在 i 這個點建立倉庫的,前i個工廠的貨物都能藏起來的最小費用。顯然f i c i min w j,i f j 其中 w j,i 表示把 j i 的貨物都運到 i 的費用 w j,i k j 1i p k x i x k x i k j 1ip k k j 1ip k x k...