您的位置:首页 > 其它

BestCoder Round #62 (div.2) Clarke and food

2015-11-15 17:47 531 查看


Clarke and food

Accepts: 353

Submissions: 962

Time Limit: 2000/1000 MS (Java/Others)

Memory Limit: 65536/65536 K (Java/Others)

问题描述
克拉克是一名人格分裂患者。某一天,克拉克变成了一个厨师,在采购食品。
克拉克一共采购了nn个食物,每个食物有一个体积v_iv​i​​。现在克拉克有一个容量为VV背包,他想用这个背包来装尽量多的食物。请你告诉他最多能装多少食物。

输入描述
第一行一个整数T(1 \le T \le 10)T(1≤T≤10),表示数据的组数。
每组数据第一行是两个整数n, V(1 \le n \le 10^5, 1 \le V \le 10^9)n,V(1≤n≤10​5​​,1≤V≤10​9​​),表示克拉克的数目和背包容量。
接下来一行有nn个正数,第ii个整数表示v_i(1 \le v_i \le 10^9)v​i​​(1≤v​i​​≤10​9​​)。

输出描述
每组数据输出一行一个数,表示答案。

输入样例
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: