这道题我个人认为是难度为8的题目,因为我已经报了两次零,一次85
先来看一下题目
说明
约翰最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。
约翰共有N头奶牛(1<n<20,000),每头奶牛有自己的高度ℎi(1<hi<10000),n头奶牛的总高度为s。书架高度为b(1<b<s<2000000007)。
为了到达书架顶层,奶牛可以踩着其他奶牛的背,像叠罗汉一样,直到他们的总高度不低于书架高度。当然若奶牛越多则危险性越大。为了帮助约翰到达书架顶层,找出使用奶牛数目最少的解决方案吧。每头奶牛有自己的高度),每头奶牛有自己的高度h_i$(1<hi<10000),n头奶牛的总高度为s。书架高度为b(1<b<s<2000000007)。
输入格式
第11行:空格隔开的整数N和B;
第2simN+1行:第i+1行为整数Hi;。
输出格式
能达到书架高度所使用奶牛的最少数目。
样例
输入数据 1
6 40
6
18
11
13
19
11
Copy
输出数据 1
3
题目我们看完了,下面就是代码展示(我认为我的方法有点农村,我就不写重点了)
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[200001],n,b,sum=0;
cin>>n>>b;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int c=n-1,d=0;
while(sum<b){
sum=sum+a[c];
c--;
d++;
}
cout<<d;
return 0;
}
上面就是道题的解释了