題目描述
p 教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。
p 教授有編號為 1⋯n
1 \cdots n
1⋯n 的 n
nn 件玩具,第 i
ii 件玩具經過壓縮後的一維長度為 c
ic_i
ci。
在乙個一維容器中的玩具編號是連續的。
同時如果乙個一維容器中有多個玩具,那麼兩件玩具之間要加入乙個單位長度的填充物。形式地說,如果將第 ii 件玩具到第 jj 個玩具放到乙個容器中,那麼容器的長度將為 x=j
−i+∑
k=ij
ck
x=j-i+\sum\limits_^c_k
x=j−i+
k=i∑
jck
。製作容器的費用與容器的長度有關,根據教授研究,如果容器長度為 xx,其製作費用為(x−
l)
2(x-l)^2
(x−l)2
。其中 l
ll 是乙個常量。p 教授不關心容器的數目,他可以製作出任意長度的容器,甚至超過l
ll。但他希望所有容器的總費用最小。
輸入格式
第一行有兩個整數,用乙個空格隔開,分別代表 n
nn 和 lll。
第 2
22 到 第 (n+
1)
(n + 1)
(n+1
) 行,每行乙個整數,第 (i+
1)
(i + 1)
(i+1
) 行的整數代表第 i
ii 件玩具的長度 c
ic_i
ci 。
輸出格式
輸出一行乙個整數,代表所有容器的總費用最小是多少。
輸入輸出樣例
輸入 #1
5 4342
14輸出 #1
說明/提示
對於全部的測試點,1≤n
≤5×1
04
1 \leq n \leq 5 \times 10^4
1≤n≤5×
104,1≤l
≤107
1 \leq l \leq 10^7
1≤l≤10
7,1≤ci
≤107
1 \leq c_i \leq 10^7
1≤ci≤
107 。
題解這題有o(n
)o(n)
o(n)
的斜率優化方法
首先如果這題有o(n
2)
o(n^2)
o(n2
)的部分分的話應該不難想到dp方程:
d p[
i]=m
in
dp[i]=min\
dp[i]=
min至於斜率優化,還是按老套路來,把min
minmi
n去掉然後把關於j
jj的放在右邊。。
由於方程中常數過多,直接設a[i
]=su
m[i]
+i,b
[i]=
sum[
i]+i
+l+1
a[i]=sum[i]+i,b[i]=sum[i]+i+l+1
a[i]=s
um[i
]+i,
b[i]
=sum
[i]+
i+l+
1 所以2 ∗a
[i]∗
b[j]
+dp[
i]−a
[i]2
=dp[
j]+b
[j]2
2*a[i]*b[j]+dp[i]-a[i]^2=dp[j]+b[j]^2
2∗a[i]
∗b[j
]+dp
[i]−
a[i]
2=dp
[j]+
b[j]2b[
j]
b[j]
b[j]
是x
xx,dp[
j]+b
[j]2
dp[j]+b[j]^2
dp[j]+
b[j]
2是yy
y,2∗a[
i]
2*a[i]
2∗a[i]
是斜率,dp[
i]−a
[i]2
dp[i]-a[i]^2
dp[i]−
a[i]
2是截距。
由於a
aa和b
bb陣列都是單調的,所以直接雙指標掃一遍即可。
HNOI2008 玩具裝箱toy
重點在講斜率優化 description p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1.n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一...
HNOI2008 玩具裝箱toy
dp i min dp j sum i sum j c 2 dp k sum i sum k c 2 dp k si sum k 2 dp k si 2 2 si sum k sum k 2 dp k sum k 2 dp j sum j 2 2 si sum k sum j yk yj 2 si ...
HNOI2008 玩具裝箱TOY
題目描述 p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1 n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時...