7.13 CW 模拟赛 T1. 六出祁山
前言
心态: 冷静, 耐心, 放下
策略: \(50\)
停滞: \(20\)
数据检验, 关键步记录, 简化表述
思路
首先, 如果知道这是一个顺序 \(\rm{dp}\) 那就随便想了
但是场上的我选择了神秘的区间 \(\rm{dp}\)
所以需要在这里区分一下区间 \(\rm{dp}\) 和顺序 \(\rm{dp}\) 的适用范围
首先区间 \(\rm{dp}\) 适用于操作顺序会影响能操作的内容的问题
其次如果操作区间是可以覆盖的, 那么可能会存在通过覆盖操作更优化的做法, 没法顺着做
本题中, 我们显然可以把最终的合法解形态看做是一个数组 \(\delta_i\)
要求 \(\forall i \in [1, n), \left|(h_i + \delta_i) - (h_{i + 1} + \delta_{i + 1})\right| \leq d\) 时 \(\displaystyle\min \left(\sum_{i = 1}^{n} |\delta_i| \right)\)
不妨设 \(f_{i, j}\) 表示前 \(i\) 个元素, 最后一个元素的高度为 \(j\) 时的最小代价
那么显然有
\[f_{i, j} = \min_{k \in [j - d, j + d]} f_{i - 1, k} + \left|h_i - j\right|
\]
但是这样的转移是 \(\Theta(n|h||d|)\) 的, 过不去
不过你看到那个绝对值了吗, 这不一眼凸优化
我操了, 这是原题(哭)