Clarke and food
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 466 Accepted Submission(s): 268
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 Output
2 Hint: We can carry 1 and 3, the total volume of them is 5. 题意:给出一堆食物的价钱和你所拥有的最大钱数,求最多买几个 思路:刚看到秒选背包但是写完发现V是1e9啊,什么鬼,直接排序暴力就行了,汗(= =! ac代码:#include<stdio.h> #include<string.h> #include<math.h> #include<stack> #include<iostream> #include<algorithm> #define fab(a) (a)>0?(a):(-a) #define LL long long #define MAXN 1000010 #define mem(x) memset(x,0,sizeof(x)) #define INF 0xfffffff using namespace std; int a[MAXN]; int main() { int t,i,n,j; LL m; scanf("%d",&t); while(t--) { scanf("%d%lld",&n,&m); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); //printf("%d\n",a[0]); LL num=m; int ans=0; for(i=0;i<n;i++) { if(num-a[i]<0) break; num-=a[i]; ans++; } printf("%d\n",ans); } return 0; }