解题思路:先接受数据,将对应数量的纪念品价值进行从小到大排序,再利用双指针法进行分组计数,左右指针指向纪念品价值之和不大于上限时,左指针右移,右指针左移,否则只移动右指针将右边的纪念品单独分为一组,每次记录分组数目,最后输出即为结果
注意事项:注意要先正向排序,不要忘了这个
参考代码:
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 人评分
计算质因子 (C++代码)100以内质数直接打表就好了浏览:1191 |
点我有惊喜!你懂得!浏览:1977 |
C语言训练-谁家孩子跑最慢* (C语言代码)浏览:1507 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:589 |
字符串输入输出函数 (Java代码)浏览:1437 |
C语言训练-排序问题<1> (C++代码)浏览:589 |
蓝桥杯历届试题-九宫重排 (C++代码)浏览:2783 |
【明明的随机数】 (C++代码)浏览:779 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:755 |
WU-复数求和 (C++代码)浏览:1995 |