1 条题解
-
0
题解
思路
令一个点 对应区间 。三角形参数 对应斜边区间 ,其代价为区间长度乘 ;该三角形能覆盖点,当且仅当点的区间完全包含在三角形区间中。
若两个最优方案中的三角形区间相交,可以把它们合并,合并后的长度不大于原长度之和,且覆盖点只会增加。因此存在一个最优方案,其中三角形区间两两不交。
先假设所有点均单独删除,总费用为 。使用区间 的三角形能获得的净节省为
问题变成选择若干不交区间,使总节省最大,最后答案为 减去最大节省。
做法
子任务 1:枚举单位段集合
把 分成 个单位段。任意被选择的单位段集合可按连续块合并为若干三角形区间,总代价为选择单位段数乘 。点 被三角形覆盖,当且仅当从 到 的所有单位段都被选择。
枚举 个集合,直接计算三角形费用和未覆盖点的单删费用,取最小值。
子任务 2:二次动态规划
令 表示只考虑斜边坐标前缀 时的最大节省。若最后一个三角形为 ,则由 转移。
扫描右端点 ,对每个可能的左端点维护
右端点增加一时,所有 的 减去 ;每个满足 的点会给所有 的 加上 。然后
直接循环维护所有左端点即可得到 算法。
子任务 3:区间加与全局最大值
上述转移只需要:
- 对前缀 加 ;
- 对前缀 加 ;
- 查询全局最大值;
- 在位置 写入 。
用带懒标记的线段树维护这些操作。初始时位置 为零,其余位置为负无穷。扫描完所有 后,答案为 。
复杂度
三个层级的时间复杂度分别为 、 和 ;满分算法空间复杂度为 。
- 1
信息
- ID
- 1393
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者