bzoj-1010 玩具装箱/文章断行
题目:P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为 1 … N 1…N 1…N的 N N N件玩具,第 i i i件玩具经过压缩后变成一维长度为 C i C_i Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第 i i i件玩具到第 j j j个玩具放到一个容器中,那么容器的长度将为制 x = j − i + ∑ k = 1 j C k x=j - i + \sum ^j_{k=1} C_k x=j−i+∑k=1jCk作容器的费用与容器的长度有关,根据教授研究,如果容器长度为 xx ,其制作费用为 ( X − L ) 2 (X-L)^2 (X−L)2.其中 L 是一个常量。P教授不关心容器的数目,他可以制作出任意长度的容器,甚至超过 L 。但他希望费用最小.
首先定义方程:设在第 i i i个玩具所需的费用为: d p ( i ) dp(i) dp(i),则可以列出动态规划方程:
d
p
(
i
)
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
(
i
−
j
−
1
−
L
+
∑
k
=
j
+
1
i
C
k
)
2
}
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
(
i
−
j
−
1
−
L
+
∑
k
=
1
i
C
k
−
∑
k
=
1
j
C
k
)
2
}
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
[
(
i
+
∑
k
=
1
i
C
k
)
−
(
j
+
∑
k
=
1
j
C
k
)
−
1
−
L
]
2
}
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
[
(
i
−
1
+
∑
k
=
1
i
C
k
)
−
(
j
+
L
+
∑
k
=
1
j
C
k
)
]
2
}
dp(i) = \min_{0\leq j < i} \{dp(j) + (i - j - 1 -L + \sum^i_{k=j+1}{C_k})^2\} \\ = \min_{0\leq j < i} \{dp(j) + (i - j - 1 -L + \sum^i_{k=1}{C_k} - \sum^j_{k=1}{C_k})^2\} \\ = \min_{0\leq j < i} \{dp(j) + [(i + \sum^i_{k=1}{C_k}) - (j + \sum^j_{k=1}{C_k}) - 1 -L ]^2\} \\ = \min_{0\leq j < i} \{dp(j) + [(i - 1 + \sum^i_{k=1}{C_k}) - (j + L + \sum^j_{k=1}{C_k})]^2\} \\
dp(i)=0≤j<imin{dp(j)+(i−j−1−L+k=j+1∑iCk)2}=0≤j<imin{dp(j)+(i−j−1−L+k=1∑iCk−k=1∑jCk)2}=0≤j<imin{dp(j)+[(i+k=1∑iCk)−(j+k=1∑jCk)−1−L]2}=0≤j<imin{dp(j)+[(i−1+k=1∑iCk)−(j+L+k=1∑jCk)]2}
令:
a
(
i
)
=
i
−
L
+
∑
k
=
1
i
C
k
,
b
(
i
)
=
i
+
1
+
∑
k
=
1
i
C
k
a(i) =i - L + \sum^i_{k=1} C_k, b(i) =i + 1 + \sum^i_{k=1} C_k
a(i)=i−L+k=1∑iCk,b(i)=i+1+k=1∑iCk,则:
d
p
(
i
)
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
[
a
(
i
)
−
b
(
j
)
]
2
}
=
min
0
≤
j
<
i
{
d
p
(
j
)
+
a
(
i
)
2
+
b
(
j
)
2
−
2
a
(
i
)
b
(
j
)
}
=
min
0
≤
j
<
i
{
−
[
2
a
(
i
)
b
(
j
)
]
+
[
d
p
(
j
)
+
a
(
i
)
2
+
b
(
j
)
2
]
}
dp(i) = \min_{0\leq j < i} \{dp(j) + [a(i) - b(j)]^2\} \\ = \min_{0\leq j < i} \{dp(j) + a(i)^2 + b(j)^2 - 2a(i)b(j)\} \\ = \min_{0\leq j < i} \{-[2a(i)b(j)] + [dp(j) + a(i)^2 + b(j)^2]\} \\
dp(i)=0≤j<imin{dp(j)+[a(i)−b(j)]2}=0≤j<imin{dp(j)+a(i)2+b(j)2−2a(i)b(j)}=0≤j<imin{−[2a(i)b(j)]+[dp(j)+a(i)2+b(j)2]}
由于
a
(
i
)
2
a(i)^2
a(i)2与
j
j
j无关,则:
d
p
(
i
)
=
a
(
i
)
2
+
min
0
≤
j
<
i
{
−
[
2
a
(
i
)
b
(
j
)
]
+
[
d
p
(
j
)
+
b
(
j
)
2
]
}
dp(i) = a(i)^2 + \min_{0\leq j < i} \{-[2a(i)b(j)] + [dp(j) + b(j)^2]\}
dp(i)=a(i)2+0≤j<imin{−[2a(i)b(j)]+[dp(j)+b(j)2]}
令
K
i
=
2
a
(
i
)
,
X
j
=
b
(
j
)
,
Y
j
=
d
p
(
j
)
+
b
(
j
)
2
K_i = 2a(i), X_j = b(j), Y_j = dp(j) + b(j)^2
Ki=2a(i),Xj=b(j),Yj=dp(j)+b(j)2,即可将其化简为:
d
p
(
i
)
=
min
0
≤
j
<
i
{
−
K
i
X
j
+
Y
j
}
dp(i) = \min_{0\leq j < i} \{-K_iX_j+Y_j\}
dp(i)=0≤j<imin{−KiXj+Yj}
的形式,进行斜率优化。