【tyvj1099】超级书架
2015-12-30 16:46
169 查看
描述
Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留
有一点空间。
所有N(1 <= N <= 20,000)头奶牛都有一个确定的身高H_i
(1 <= H_i <= 10,000)。设所有奶牛身高的和为S。书架的高度为B,并且保证
1 <= B <= S < 2,000,000,007。
为了够到比最高的那头奶牛还要高的书架顶,奶牛们不得不象演杂技一般,
一头站在另一头的背上,叠成一座“奶牛塔”。当然,这个塔的高度,就是塔中
所有奶牛的身高之和。为了往书架顶上放东西,所有奶牛的身高和必须不小于书
架的高度。显然,塔中的奶牛数目越多,整座塔就越不稳定,于是奶牛们希望在
能够到书架顶的前提下,让塔中奶牛的数目尽量少。
现在,奶牛们找到了你,希望你帮她们计算这个最小的数目。
输入格式
* 第1行: 2个用空格隔开的整数:N 和 B* 第2..N+1行: 第i+1行是1个整数:H_i
输出格式
* 第1行: 输出1个整数,即最少要多少头奶牛叠成塔,才能够到书架顶部
测试样例1
输入
6 40 6
18
11
13
19
11
输出
3
备注
输入说明:一共有6头奶牛,书架的高度为40,奶牛们的身高在6..19之间。
输出说明:
一种只用3头奶牛就达到高度40的方法:18+11+13。当然还有其他方法,在
此不一一列出了。
【题解】
贪心
【代码】
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int cmp(int a,int b){ return a>b; } int n,m,a[20005]; int main(){ scanf("%d%d",&n,&m);int i,ans=0; for (i=1;i<=n;++i) scanf("%d",&a[i]); sort(a+1,a+n+1,cmp); for (i=1;i<=n;++i){ ans+=a[i]; if (ans>=m) break; } printf("%d",i); }
相关文章推荐
- mapreduce中的context类
- Mongodb数据导出工具mongoexport和导入工具mongoimport介绍
- GlassFish移植Tips
- HTML5学习之路--SVG配合js制作动画
- POJ-3685 Matrix
- ConvertFrom-String 命令研究
- 1223 递归
- 实验五 虚拟内存页面置换算法
- Java类集学习(五)集合的输出
- 操作-postgre安装
- 070 - Climbing Stairs
- diamond淘宝框架使用
- WeUI logo专为微信设计的 UI 库 WeUI
- AngularJS基础——工具方法
- Android中View的setTag和getTag方法简述
- 深入研究mysql中group by与order by取分类最新时间内容
- POJ-3662 Telephone Lines
- Anaconda 32在windows下安装gensim
- 关于Android的.so文件所需要知道的
- 实战2--应用EL表达式显示投票结果