1 条题解
-
0
奇妙跳跃:题解
思路
令 表示到达位置 的最小费用,朴素转移为
$$dp_i=\min_{j<i}\left(dp_j+\min_{j\le x\le i}a_x(i-j)^2\right).$$关键性质是:最优转移区间的最小值一定出现在某个端点。若最小值 只出现在内部 ,则拆成 后费用变为
原转移不可能最优。
做法
取阈值 ,分三类枚举端点最小值转移。
- 直接枚举距 不超过 的全部左端点,并向左维护区间最小值。
- 当右端点 时,向左枚举到第一个 。固定一个小值后,各次扫描区间互不重叠,总量为 。
- 维护一个栈,保存值严格递增且不超过 的候选左端点。枚举栈中至多 个位置,处理区间最小值出现在左端点的远距离转移。
为什么可以忽略两端值都大于 的远跳?逐格跳的费用至多为 。若一次长度为 的跳跃最优,则
从而 ;这种转移已经被第一类枚举。
三类合并后覆盖全部可能的最优转移。
复杂度
时间复杂度为 ,空间复杂度为 。
子任务算法
- :枚举所有 并维护区间最小值,复杂度 。
- 所有 :二次函数是凸的,拆成单位跳最优,故 。
- :取 ,只需小值端点扫描与单调候选栈,复杂度 。
- 无限制:使用根号分治算法。
- 1
信息
- ID
- 1346
- 时间
- 5000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者