[HNOI2008]玩具装箱TOY
题目链接 学过斜率优化的同学应该知道只是一道板子题,这里我们给出一个不同的解法: 我们定义 f [ i ] f[i] f [ i ] 表示考虑到了第 i i i 个点的最小代价是多少,那么我们可以得出这个转移式子: f [ i ] = m i n j = 1 i ( f [ j ] + w [ j ] [ i ] ) f[i]=min_{j=1}^i(f[j]+w[j][i]) f [ i ] = m i n j = 1 i ( f [ j ] + w [ j ] [ i ] ) 其中 w [ j ] [ i ] = ( j − i + ∑ k = 1 j c [ k ] − L ) 2 w[j][i]=(j-i+\sum_{k=1}^j c[k]-L)^2 w [ j ] [ i ] = ( j − i + ∑ k = 1 j c [ k ] − L ) 2 看着像不太好优化的样子,但是实际上我们发现 f [ i ] f[i] f [ i ] 是凸的,换句话说 f [ i ] f[i] f [ i ] 的决策点具有单调性。 这样我们考虑如果我们已经知道了一个状态 f [ i ] f[i] f [ i ] ,我们考虑它能更新哪些状态,不难发现,由于决策点具有单调性,那么我们可以二分一下它所影响的区间,具体我们画图来解释一下: 一开始所有点的最优决策点: