巧妙的区间 $dp$ .
设 $f(i,j,l,r)$ 表示最后一次操作将 $j$ 删掉,且最后一次操作的最小值为 $l$ ,最大值为 $r$ ,删掉区间 $[i,j]$ 的最小代价.
设 $g(i,j)$ 表示以任意顺序删掉区间 $[i,j]$ 的最小代价.
$g$ 的转移是枚举最后一次操作.
$$
f(i,j,l,r)+g(j+1,k)+A+B\cdot(r-l)^2 \to g(i,k)
$$
$f$ 的转移是枚举用来更新最值的数.
$$
f(i,j,l,r)+g(j+1,k-1)\to f(i,k,\min(l,w_k),\max(r,w_k))
$$
需要注意两个 $dp$ 数组的初始化以及权值的离散化.
1 | //%std |