您的位置:首页 > 其它

hdu 5562 Clarke and food(贪心)

2015-11-17 16:08 393 查看
[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.


[align=left]Source[/align]
BestCoder Round #62 (div.2)

贪心,将值从小到大排序后,一直选就可以了。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<bitset>
#include<map>
#include<vector>
#include<stdlib.h>
#include <stack>
using namespace std;
#define PI acos(-1.0)
#define max(a,b) (a) > (b) ? (a) : (b)
#define min(a,b) (a) < (b) ? (a) : (b)
#define ll long long
#define eps 1e-10
#define MOD 1000000007
#define N 100006
#define inf 1e12
int n,v;
int a
;
int dp
;
int dp_num
;
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&v);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
int ans=0;
int index=0;
while(v>0){
if(v>=a[index]){
v-=a[index];
index++;
ans++;
}else{
break;
}

}
printf("%d\n",ans);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: