题目描述
项目组共有 N 个开发人员,项目经理接到了 M 个独立的需求,每个需求的工作量不同,且每个需求只能由一个开发人员独立完成,不能多人合作。
假定各个需求直接无任何先后依赖关系,请设计算法帮助项目经理进行工作安排,使整个项目能用最少的时间交付。
输入描述
第一行输入为 M 个需求的工作量,单位为天,用逗号隔开。
例如:
X1 X2 X3 ... Xm
表示共有 M 个需求,每个需求的工作量分别为X1天,X2天,...,Xm天。其中:
- 0 < M < 30
- 0 < Xm < 200
第二行输入为项目组人员数量N
例如:
5
表示共有5名员工,其中 0 < N < 10
输出描述
最快完成所有工作的天数
例如:
25
表示最短需要25天完成所有工作
用例1
输入 | 6 2 7 7 9 3 2 1 3 11 4 2 |
输出 | 28 |
说明 | 共有两位员工,其中一位分配需求 6 2 7 7 3 2 1 共需要28天完成,另一位分配需求 9 3 11 4 共需要27天完成,故完成所有工作至少需要28天。 |
题目解析
本题可以理解为,将不同大小的M个球放入N个同样的桶中,问桶的最小容量。
M个球分成N份,可以使用回溯算法求解。假设一个容量,如果满足要求,说明此容量
可以作为一个可能的题解,但题目要求找最小容量,因此可以用二分法,缩小容量,
继续判断是否符合要求。。
代码
c++
#include <bits/stdc++.h>
using namespace std;
vector<int> vec;
//#inde