1 条题解
-
0
题解
思路推导
把所有有人椅子的位置依次记为 ,把所有空椅子的位置依次记为 。题目保证 。
任意最优匹配都可以调整为不交叉匹配。若 却分别匹配到 ,由绝对值距离在直线上的单调性质,有
因此交换这两个人的目标不会增大代价。反复消除交叉后,人的相对次序与所选空椅子的相对次序一致。
做法
依次扫描空椅子。令 表示已经考虑过当前前缀的空椅子,并让前 个人就座的最小代价。初始时 ,其余状态为无穷大。
扫描到空椅子 时,倒序枚举 。可以不使用这把椅子;也可以让第 个人坐到这里,用
$$dp_j\leftarrow\min\bigl(dp_j,dp_{j-1}+|p_j-z|\bigr)$$更新。倒序枚举保证每把空椅子只被使用一次。全部空椅子处理完后, 即为答案。
正确性证明
由不交叉性质,至少存在一种最优方案,使第 个人匹配到所选空椅子序列中的第 个。因此只需在所有空椅子的有序子序列中选择长度为 的一个。
扫描某把空椅子时,任一合法选择只有两种情况:不选它,状态保持不变;选择它作为当前最后一个人的目标,则此前必须已经为前一个人选择完目标,转移代价为两位置之差。转移完整覆盖且只覆盖所有有序子序列。归纳可知每个状态保存对应前缀内的最小代价,最终 就是全局最优值。
复杂度分析
设有人椅子数为 。时间复杂度为 ,最坏为 ;空间复杂度为 。
- 1
信息
- ID
- 1148
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者