HDU5562——Clarke and food
2016-08-05 14:46
513 查看
Clarke and food
[align=center]Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1002 Accepted Submission(s): 563
[/align]
[align=left]Problem Description[/align]
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 ith
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.
[align=left]Input[/align]
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 ith
integer denotes vi(1≤vi≤109).
[align=left]Output[/align]
For each test case, print a line with an integer which denotes the answer.
[align=left]Sample Input[/align]
1
3 5
1 3 4
[align=left]Sample Output[/align]
2
Hint:
We can carry 1 and 3, the total volume of them is 5.
解:题意为有n个食物体积分别为a[i],要将他们装入体积为v的书包内,问能够最多装多少个食物,优先装小的食物。贪心水题。
#include<stdio.h> #include<algorithm> #include<iostream> using namespace std; int main() { int t; long long n,v; long long a[100005]; scanf("%d",&t); while(t--){ int count=0; scanf("%lld%lld",&n,&v); for(int i=0;i<n;i++){ scanf("%lld",&a[i]); } sort(a,a+n); for(int i=0;i<n;i++){ if(v-a[i]>=0){ v=v-a[i]; count++; } else break; } printf("%d\n",count); } return 0; }