蓝桥试题 算法提高 打包(二分法,最大值最小化)

这篇博客介绍了蓝桥竞赛中关于如何使用二分法来解决最大重量最小化的问题。通过对给定的礼物重量进行处理,通过二分查找法在最大重量和礼物总重量之间寻找最优解,确保每个人收到连续编号的礼物同时降低包裹的最大重量。文章还提到了类似题目,但存在未解决的问题。
摘要由CSDN通过智能技术生成

资源限制

时间限制: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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值