Clarke and food
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 78 Accepted Submission(s): 53
Problem Description
Clarke is a patient with multiple personality disorder. One day, Clarke turned into a cook, was shopping for food.
Clarke has bought n food. The volume of the i th food is vi . Now Clarke has a pack with volume V . He wants to carry food as much as possible. Tell him the maxmium number he can brought with this pack.
Clarke has bought n food. The volume of the i th food is vi . Now Clarke has a pack with volume V . He wants to carry food as much as possible. Tell him the maxmium number he can brought with this pack.
Input
The first line contains an integer
T(1≤T≤10)
, the number of the test cases.
For each test case:
The first line contains two integers n,V(1≤n≤105,1≤V≤109) .
The second line contains n integers, the i th integer denotes vi(1≤vi≤109) .
For each test case:
The first line contains two integers n,V(1≤n≤105,1≤V≤109) .
The second line contains n integers, the i th integer denotes vi(1≤vi≤109) .
Output
For each test case, print a line with an integer which denotes the answer.
Sample Input
1 3 5 1 3 4
Sample Input
1 3 5 1 3 4
题意:有n个食物,重量分别为a[i],要装进总容纳重量为V的背包里。问能装几个。
水,优先重量小的贪心就好了,代码如下:
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100100];
int main()
{
int t,n,v,i,sum;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&v);
for(i=0;i<n;++i)
scanf("%d",&a[i]);
sort(a,a+n);
sum=0;
int cnt=0;
for(i=0;i<n;++i)
{
sum+=a[i];
if(sum>=v)
break;
cnt++;
}
printf("%d\n",cnt);
}
return 0;
}