当前位置: 首页 > 面试经验 >

【华为OD机试2023】租车骑绿道(Python)

优质
小牛编辑
95浏览
2023-03-28

【华为OD机试2023】租车骑绿道(Python)

题目描述:

部门组织绿道骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。

给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述:

第一行两个数字m、n,自行车限重m,代表部门总人数n。

第二行,n个数字,代表每个人的体重。体重都小于等于自行车限重m。

0 < m <= 200

0 < n <= 1000000

输出描述:

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

示例1

输入:

3 4

3 2 2 1

输出:

3

解题思路:

把部门所有人按照体重降序排列,双指针。

如果最重的人+最轻的人的体重超过了自行车限重,那么最重的人只能自己骑一辆车。左指针指向次重的人,如果次重的人(剩下的人中最重的人)+最轻的人的体重没超过限重,那么这两个人合骑一辆,左右指针都向中间移动一格,以此循环就行了


m,n=map(int,input().split())
peoples=sorted(list(map(int,input().split())),reverse=True)
pang=0
shou=n-1
count=0
last=m
while last>0:
if last==1:
count+=1
last-=1
else:
if peoples[pang]+peoples[shou]<=m:
pang+=1
shou-=1
count+=1
last-=2
else:
pang+=1
count+=1
last-=1
print(count)

#华为机试,emo了#
 类似资料: