Clarke and food
Accepts: 353
Submissions: 962
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
克拉克是一名人格分裂患者。某一天,克拉克变成了一个厨师,在采购食品。 克拉克一共采购了n个食物,每个食物有一个体积vi。现在克拉克有一个容量为V背包,他想用这个背包来装尽量多的食物。请你告诉他最多能装多少食物。
输入描述
第一行一个整数T(1≤T≤10),表示数据的组数。 每组数据第一行是两个整数n,V(1≤n≤105,1≤V≤109),表示克拉克的数目和背包容量。 接下来一行有n个正数,第i个整数表示vi(1≤vi≤109)。
输出描述
每组数据输出一行一个数,表示答案。
输入样例
1 3 5 1 3 4
输出样例
2
Hint
我们可以放第1个和第3个,这样总容量为5。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=1e5+10;
int a[maxm];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,v;
scanf("%d%d",&n,&v);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
int sum=0,cnt=0;
for(int i=0;i<n;i++)
{
if(sum+a[i]<=v)
{
cnt++;
sum+=a[i];
}
}
printf("%d\n",cnt);
}
return 0;
}