解题思路:先接受数据,将对应数量的纪念品价值进行从小到大排序,再利用双指针法进行分组计数,左右指针指向纪念品价值之和不大于上限时,左指针右移,右指针左移,否则只移动右指针将右边的纪念品单独分为一组,每次记录分组数目,最后输出即为结果
注意事项:注意要先正向排序,不要忘了这个
参考代码:
shangxian=int(input())
jianshu=int(input())
congxiaodaoda=[]
for i in range(jianshu):
a=int(input())
congxiaodaoda.append(a)
congxiaodaoda.sort(reverse=False)#先从小到大排一遍
fenzu=0
left=0
right=len(congxiaodaoda)-1
while left<=right:#注意是小于等于
if congxiaodaoda[left]+congxiaodaoda[right]<=shangxian:
left+=1
right-=1
else:
right-=1
fenzu+=1
print(fenzu)
0.0分
2 人评分