AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0014. 魔法世界中的机器调配

困难通过率 54% · 提交 150 · 通过 81
贪心排序模拟

小慕正在负责一个大型项目,项目中有数百个任务需要在固定的时间段内完成。每个任务都有一个明确的开始时间、结束时间(),以及它所需要完成的工作量。为了按时完成这些任务,小慕可以调用各种强大的工作机器(类似智能机器人的存在),这些机器拥有。 小慕的目标是通过合理调配这些工作机器,在给定的时间内高效地完成所有任务。每个任务可能会在不同的时间段内与其他任务重叠,因此我们需要计算才能按时完成这些任务。

提示:带虚线的词点一下有通俗解释。

输入描述

- 第一行:整数 **n**,表示任务的数量。 - 接下来的 **n** 行,每行包含三个整数 **starttime**、**endtime** 和 **tasknum**,分别表示一个任务的开始时间、结束时间和所需完成的工作量。 - 第 **n+2** 行:整数 **ability**,表示每台机器每单位时间内能够完成的工作量。 - `1 <= n, tasknum <= 10^4` - `1 <= starttime < endtime <= 10^5`

输出描述

输出一个整数,表示完成所有任务所需的最少机器数量。

示例

示例 1

输入

3
1 4 10
2 5 5
3 6 15
5

输出

2

示例 2

输入

3
1 3 6
2 4 4
4 6 10
3

输出

2

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
任务时间线及所需机器数计算 1 2 3 4 5 任务1 (工作量10) 任务2 (工作量5) 任务3 (工作量15) 时刻3 时刻3:任务1+2+3 总工作量 = 10+5+15 = 30 每台机器单位能力 = 5 所需机器数 = ceil(30/5) = 6 所有时刻中所需机器数的最大值即为答案
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「魔法世界中的机器调配」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。