题意:在一行中有 个格子,编号为 。
有 颗棋子,初始时分别位于位置
和 。
按顺序给出 个要求:
- 给出位置 ,要求将两个棋子中任意一个移动到位置
。
就是说将棋子从 位置移动到
位置需要花费 秒。允许两棋子在同一个位置上。
问满足所有要求所需的最小时间。
,时限 。
考虑 ,记 为:在处理完前 个要求后,两个棋子的位置分别为 ,所需的最小时间。
可以发现,当处理完第
个要求时,必定有一个棋子在
处,故状态可以简化为:
表示在处理完前
个要求后,一个棋子在
处,另一个在
处,所需的最小时间。
转移如下:
只需维护
( 也容易写进一次函数)的区间
即可处理第二种转移。
第一种转移不便维护,记 ,改为记录
。
这样,第一种转移对
是没有影响的。
第二种转移中额外减去 即可。
使用(两颗)线段树维护,复杂度 。