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

P3307. 部门人力分配

中等通过率 46% · 提交 1,239 · 通过 564
二分查找双指针贪心排序

小慕在负责一个项目的需求开发,需要合理安排人力。当前项目共有 N 个需求,每个需求的工作量用 requirements[i] 表示,单位是。这些需求需要在 M 个月内完成开发,且每个月安排的人力是固定的。 每个月最多只能同时开发 2 个需求,并且当月所有需求的工作量总和不能超过当月的人力。请帮小慕计算,在满足项目进度要求的前提下,是多少。

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

输入描述

<p> 输入第一行为 M ,第二行为 requirements 。 </p> <p> M 表示需要开发时间要求,requirements 表示每个需求工作量大小 N 为 requirements 长度, </p> <p> 1 ≤ N / 2 ≤ M ≤ N ≤ 10000,1 ≤ requirements[i]≤ 10^9 </p>

输出描述

对于每一组测试数据,输出部门需要人力需求,行末无多余的空格。

示例

示例 1

输入

3
3 5 3 4

输出

6

说明:输入数据两行,第一行输入数据 3 表示开发时间要求,第二行输入数据表示需求工作量大小,输出数据一行,表示部门人力需求。 当选择人力为6时,2个需求量为3的工作可以在1个月里完成,其他2个工作各需要1个月完成。可以在3个月内完成所有需求。 当选择人力为5时,4个工作各需要1个月完成,一共需要4个月才能完成所有需求。 因此6是部门最小的人力需求。

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

看不懂题目?点开图解
示例:M=3,requirements=[3,5,3,4] 人力=6 时: 第1月:3+3 第2月:5 第3月:4 ✓ 3个月完成 人力=5 时: 第1月:3 第2月:3 第3月:4 第4月:5 ✗ 需4个月 最小人力 = 6 二分查找:在可能的人力范围中寻找最小的可行值
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「部门人力分配」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。