资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
Lazy有N个礼物需要打成M个包裹,邮寄给M个人,这些礼物虽然很便宜,但是很重。Lazy希望每个人得到的礼物的编号都是连续的。为了避免支付高昂的超重费,他还希望让包裹的最大重量最小。
输入格式
一行两个整数N和M。
一行N个整数,表示N个礼物的重量。
输出格式
一个整数,表示最小的最大重量。
样例输入
3 2
1 1 2
样例输出
2
数据规模和约定
N, M <= 100,000
重量 <= 1,000
分析:
结果必定落在【max(nums), sum(nums)】这个区间内,因为左端点对应每个单独的元素构成一个子数组,右端点对应所有元素构成一个子数组。
然后可以利用二分查找法逐步缩小区间范围,当区间长度为1时,即找到了最终答案。
# 开发人:HGC
# 开发时间:2021-11-16 20:20
n,m=list(map(int,input().split()))
weight=list(map(int,input().split()))
right=sum(weight)
left=max(weight)
while right>left:
mid=int((left+right)/2)
temp=0
count=1
for i in weight:
tem