华为OD机试 - 租车骑绿岛(Python)

租车骑绿道
题目
部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重 M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入
第一行两个数字 m、n,自行车限重 m,代表部门总人数 n。
第二行,n 个数字,代表每个人的体重。体重都小于等于自行车限重 m。
0 < m <= 200
0 < n <= 1000000

输出
最小需要的双人自行车数量。

示例一
输入
3 4
3 2 2 1
1
2
输出
3
1
解题思路
算法思想:

输入自行车限重 m 和部门人数 n。
输入每个人的体重,并将体重排序。
设置双指针 i 和 j,分别指向最小和最大体重的人。
如果两人体重之和小于等于 m,则租一辆双人自行车。如果两人体重之和大于 m,则租一辆单人自行车。
最后输出最少需要的自行车数量。

m,n=[int(x) for x in input().split()]
list1=[int(x) for x in input().split()]
list1=sorted(list1,reverse=True)


def min_bicycle(arr:list):
    mina=0
    left=0
    right=n-1
    while(left<right):
        if(arr[left]+arr[right]>m):
            left+=1
            mina+=1
        else:
            left+=1
            right-=1
            mina+=1
    if(left==right):
        mina+=1
    return mina

print(min_bicycle(list1))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值