[模擬]超級書架
阿新 • • 發佈:2017-06-07
有一點 john int 所有 一道 rdquo top tyvj sca
的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留
有一點空間。
所有N(1 <= N <= 20,000)頭奶牛都有一個確定的身高H_i
(1 <= H_i <= 10,000)。設所有奶牛身高的和為S。書架的高度為B,並且保證
1 <= B <= S < 2,000,000,007。
為了夠到比最高的那頭奶牛還要高的書架頂,奶牛們不得不象演雜技一般,
一頭站在另一頭的背上,疊成一座“奶牛塔”。當然,這個塔的高度,就是塔中
所有奶牛的身高之和。為了往書架頂上放東西,所有奶牛的身高和必須不小於書
架的高度。顯然,塔中的奶牛數目越多,整座塔就越不穩定,於是奶牛們希望在
能夠到書架頂的前提下,讓塔中奶牛的數目盡量少。
現在,奶牛們找到了你,希望你幫她們計算這個最小的數目。
* 第2..N+1行: 第i+1行是1個整數:H_i
一共有6頭奶牛,書架的高度為40,奶牛們的身高在6..19之間。
輸出說明:
一種只用3頭奶牛就達到高度40的方法:18+11+13。當然還有其他方法,在
此不一一列出了。
題面
描述
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<cstdio> #include<algorithm> using namespace std; int h[20001]; int main() { int n,s; scanf("%d%d",&n,&s); for(int i=1;i<=n;i++) scanf("%d",&h[i]); sort(h+1,h+n+1); for(int i=n;i>0;i--) { s-=h[i]; if(s<=0){printf("%d",n-i+1);return 0;} } }
[模擬]超級書架