题目来源
学军中学CSP-J2019第二轮A模拟冲剌训练1-day1
地址:http://dev.xjoi.net/contest/1295/problem/1。
题面
人人都有理想,诸葛也不例外。
诸葛有很多理想,但是诸葛没有那么多的精力去实现那么多的理想,她想在有限的精力内实现最多的理想。
输入格式
每组数据第一行输入两个整数N,V,表示诸葛有N个理想,精力为V。
接下来N行中每行有一个整数X,表示实现这个理想要耗费的精力为X。
输出格式
输出诸葛最多能实现的理想数量。
样例输入
3 10
1
5
6
样例输出
2
数据范围
30%数据满足, N≤1000 X≤10000000
60%数据满足, N≤1000 X≤2^31-1
100%数据满足,N≤100000 X≤2^31-1 V≤2^31-1
题目分析
一个贪心的模板题。
解法也很简单,将精力从小到大排序。然后一个个减就可以。
唯一要注意的就是数据范围。
样例代码
题解代码
#include <cstdio>
#include <algorithm>
const int MAXN = 100000;
unsigned long long data[MAXN];
int main() {
unsigned long long n, v;
scanf("%llu %llu", &n, &v);
int i;
for (i=0; i<n; i++) {
scanf("%llu", &data[i]);
}
std::sort(data, data+n);
int ans = 0;
for (i=0; i<n; i++) {
if (v>=data[i]) {
ans++;
v -= data[i];
} else {
break;
}
}
printf("%d\n", ans);
return 0;
}