題幹重點:
第i個工廠目前已有成品ai件,在第i個工廠位置建立倉庫的費用是bi。
對於沒有建立倉庫的工廠,其產品應被運往其他的倉庫進行儲藏……只能運往編號更大的工廠的倉庫,一件產品運送1個單位距離的費用是1
告訴你工廠的位置,在每乙個工廠建立倉庫的費用,以及它們原有產品的個數,產品只能往編號高的地方運,求把所有產品運入倉庫的最小費用
飛快地寫出轉移方程:
f
if_i
fi表示在i
ii處建倉庫且前i
ii個倉庫被安頓好的最小代價
好吧為了安頓第i
ii個倉庫裡的東西你也不得不在這裡建倉庫
f i=
fj+∑
k=j+
1iak
(dis
i−di
sk)+
ci
f_i=f_j+\sum\limits^_a_k(dis_i-dis_k)+c_i
fi=fj
+k=
j+1∑
iak
(di
si−
disk
)+c
i最後直接取f
nf_n
fn就好
實際上是o(n
3)
o(n^3)
o(n3
)好的一看就不能過我們來優化
首先從∑
\sum
∑入手我們用sum
sumsu
m陣列儲存a
ia_i
ai字首和,用s
ss陣列儲存aid
is
ia_idis_i
aidis
i的字首和
∑
\sum
∑的部分就變成了:
d is
i(su
mi−s
umj)
−si+
sj
dis_i(sum_i-sum_j)-s_i+s_j
disi(
sumi
−su
mj)
−si
+sj
即f i=
fj+d
isi(
sumi
−sum
j)−s
i+sj
+c
if_i=f_j+dis_i(sum_i-sum_j)-s_i+s_j+c_i
fi=fj
+di
si(
sumi
−su
mj)
−si
+sj
+ci
接下來就是斜率優化了
把原方程寫成y=k
x+
by=kx+b
y=kx+b
的形式:
f j+
sj=d
isis
umj+
fi+s
i−di
sisu
mi+c
if_j+s_j=dis_isum_j+f_i+s_i-dis_isum_i+c_i
fj+sj
=di
sis
umj
+fi
+si
−dis
isu
mi+
ci其中
y =f
j+sj
y=f_j+s_j
y=fj+
sjk=d
is
ik=dis_i
k=disix=
sumj
x=sum_j
x=sumjb=
fi+s
i−di
sisu
mi+c
ib=f_i+s_i-dis_isum_i+c_i
b=fi+
si−
disi
sum
i+c
i由此,一切都明了了
貼**時間到!
#include
#define ll long long
using
namespace std;
struct deque
//方便除錯
/*/ deque():head(1),tail(0),list(new int[1110000]){}//避免爆棧
//*/
intsize()
intfront()
void
push_front
(int x)
void
pop_front()
intfront_2nd()
intback()
void
push_back
(int x)
void
pop_back()
intback_2nd()
};int dis[
1110000
],a[
1110000
],c[
1110000];
ll f[
1110000
],sum[
1110000
],s[
1110000];
ll x
(int x)
ll y
(int x)
intk
(int x)
double
slope
(int a,
int b)
intmain()
printf
("%lld"
,f[n]);
return0;
}
洛谷 2120 ZJOI2007 倉庫建設
題目描述 l公司有n個工廠,由高到底分布在一座山上。工廠1在山頂,工廠n在山腳。由於這座山處於高原內陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於地形...
洛谷 P1169 ZJOI2007 棋盤製作
西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋 象棋以及日本的將棋同享盛名。據說西洋棋起源於易經的思想,棋盤是乙個8 times 88 8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好...
洛谷 P1169 ZJOI2007 棋盤製作
給定乙個n m的01矩陣,尋找最大的,相鄰值不相同的子矩陣與子方陣。n,m leq 2,000 樸素的做法是列舉兩個點來確定矩陣,再暴力判斷能不能滿足條件。複雜度 o n 4 考慮優化 判斷能不能滿足條件時,存在很多重複判斷,可以預處理。但是,怎樣進行預處理呢?這就需要我們改變列舉方式,簡化預處理的...