1 条题解
-
0
G. 电动滑板车 详细题解
题目核心理解
校园里有 栋楼,每栋楼有课程类型 (
C/M/-),并可能有一位对应学科的教授 。 你驾驶一辆最多载一名教授的滑板车,每栋楼最多前往一次,可以在楼上接教授(PICKUP)或放教授(DROPOFF)。要求最终满足:
- 所有有
C课的楼必须有C教授 - 所有有
M课的楼必须有M教授
你需要构造一组合法操作序列,题目保证一定有解。
核心思路
1. 关键性质
- 满足 的楼已经合法,可以直接忽略,不需要任何操作。
- 如果所有楼都满足 ,直接输出 步即可。
- 不合法的教授,一定是从不需要该教授的楼运到需要该教授的楼。
- 无课楼()可以作为中转点,保证运送过程合法。
2. 贪心规则
- 优先处理多余教授:把有课楼里不需要的教授移到无课楼。
- 再把缺少教授的楼用对应类型教授补齐。
- 全程保证:每栋楼只去一次,车上最多一名教授。
3. 简化策略
只需要按固定顺序处理:
- 找到一个有某类教授、但不需要该教授的楼
- 开车过去接走教授
- 开到需要该教授的楼放下
- 重复直到所有课程匹配完成
算法流程
- 遍历所有楼,跳过已经合法()的楼。
- 对于每一位不合法的教授:
- 找到其所在楼
- 记录
DRIVE u+PICKUP - 找到需要该教授的目标楼
- 记录
DRIVE v+DROPOFF
- 所有楼只访问一次,不重复驾驶。
- 按顺序输出所有操作。
公式与复杂度分析
合法条件:
$$\forall i,\ c_i \neq \text{`-'} \implies p_i = c_i $$复杂度
- 遍历与构造路线:
- 总时间复杂度:
- 空间复杂度:
可轻松处理 的数据范围,在 秒时限内稳定通过。
- 所有有
- 1
信息
- ID
- 6589
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者