这道题是斜率优DP的模板题,非常基础,但是我们内部测试的时候我推的式子把一个$+$写成了$-$,然而暴力也写错了,所以没有分。
方程:
$f_i=\min{f_j+\displaystyle\sum_{k=j+1}^{i-1}{i-k}}+a_i$
其中$f_i$表示到第i个地方我们建塔的最小花费,那么枚举的j就是上一个建塔的地方,这里认为$j+1..i-1$的地方都不建造塔,都放木偶,所以木偶的花费就在dp式子中间的那个求和符号那里计算,最后加上当前建造塔的花费。
容易变形得到:
$f_i=\min{f_j+\frac{(i-j)\times(i-j-1)}{2}}+a_i$
注意这里拆括号时加减号不要像我那样写错。
拆括号:
$f_i=f_j+\frac{i^2-i}{2}+\frac{j^2+j}{2}-i\times j+a_i$
继续变形,把j的放一边,i的放一边。
$f_j+\frac{j^2+j}{2}=i\times j+f_i-\frac{i^2-i}{2}+a_i$
此时,发现这是可以斜率优化的式子。感性理解为一个平面直角坐标系中的一个凸包即可,令$y=f_j+\frac{j^2+j}{2},k=i,x=j,b=f_i-\frac{i^2-i}{2}+a_i$即可。
这是最终的代码:
1 |
|
这是对拍用的暴力:
1 |
|