租车骑绿道
题目
部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重 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))