注册 登录
编程论坛 C语言论坛

求代码,拜托大佬们了

快乐的小风男 发布于 2019-11-10 14:25, 1143 次点击
题目描述
教师是人类的灵魂工程师。 -----沃兹急硕德 眼看元旦快到了,叶老师突然良心发现,想起了在机房夜夜苦训的学生们,觉得自己身为一名人民教师, 应当关心一下同学们,体谅民情。于是教师之魂燃起的叶老师准备给每人一份的小礼物,准备准备着,做 过头了,小礼物准备多了,这下叶老师犯难了,摸着自己头发为数不多的头发想到,要不有些同学就送两个礼物算了, 可问题来了,送给每个同学的礼物的价值之和,不能超过一个值,因为我的教师之魂不能让我偏心某些同学(jyl)! 注意:聪明的叶老师在为这些礼物分组时,发现分组数量最小的时候恰好等于学生数(不要问为什么QAQ)。

你的任务是写一个程序,输出在机房训练的小伙伴数量。

输入格式
共n+2行: 第1行包括一个整数w,为每组礼物价值之和的上限。 第2行为一个整数n,表示准备礼物的总件数G。 第3至n+2行每行包含一个正整数ai(1<=ai<=w)表示所对应礼物的价值。 50%的数据满足:1≤n≤15 100%的数据满足:1≤n≤30000,80≤w≤200

输出格式
一个整数,即小伙伴数量。

输入输出样例
输入 #1 复制
20
8  
2
2
3
5
6
7
8
9
输出 #1 复制
4
1 回复
#2
rjsp2019-11-11 09:51
最多只能送两个礼物,那没什么难的吧
先排序(最好是从大到小),然后取一个,再找到小于等于 “价值上限-当前这个物品的价值”。能找到的话,两个为一组;找不到的话,单独为一组。
1