题目来源:[USACO07DEC] Bookshelf B - 洛谷
解题思路:这道题使用排序的思想就可以解决,这道题的目标是奶牛在能够够到书架顶的前提下,使塔中奶牛的数目尽可能的少。可以用STL中的sort函数对奶牛进行排序(注:从高到低排序,可以更好的减少奶牛数目),当满足够到书架顶B时,输出当前的奶牛数目。
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 20010
int n, a[maxn], b;
int main()
{
cin >> n >> b;
int s=0,count = 0;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
// 使用greater<int>()来指定从高到低的排序顺序
sort(a, a + n, greater<int>());
for (int i = 0; i < n; i++)
{
s += a[i];
count++;
if (s >= b){
break;
}
}
cout << count << endl;
return 0;
}