1 条题解
-
0
观光公交车题解
问题分析
题目要求使用有限的加速器来减少所有乘客的总旅行时间。每个加速器可以将某段路程 减少 分钟。
关键思路
1. 时间计算
- :公交车到达第 个站点的最早时间
- :在第 个站点需要等待的最晚乘客到达时间
- :在第 个站点下车的乘客数量
- :从第 到第 个站点下车乘客数量的前缀和
2. 贪心策略
代码使用优先队列来维护可以加速的区间,每次选择能够节省最多旅行时间的区间进行加速。
算法步骤
1. 初始化计算
- 计算不使用加速器时的基础旅行时间
- 构建线段树维护每个站点的等待时间信息
2. 加速器分配
- 使用优先队列存储可加速区间,按节省时间排序
- 每次选择最优区间,使用尽可能多的加速器
- 更新线段树和优先队列
3. 最终计算
- 重新计算使用加速器后的总旅行时间
代码核心组件
线段树
- 维护 信息
- 支持区间修改和区间查询最小值
优先队列
- 存储可加速区间
- 表示该区间能节省的旅行时间
复杂度分析
- 时间复杂度:
- 空间复杂度:
样例分析
对于样例:
3 3 2 1 4 0 1 3 1 1 2 5 2 3
算法会识别出对 使用加速器效果最好,使用 个加速器将 从 减到 ,总旅行时间从 减少到 。
执行过程:
- 初始状态:,
- 分析发现对 加速效果最优
- 使用 个加速器:
- 总旅行时间:
- 1
信息
- ID
- 3535
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者