洛谷 P2677 超級書架 2 題解

2022-05-05 20:42:06 字數 1045 閱讀 2558

farmer john最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。 所有n(1 <= n <= 20)頭奶牛都有乙個確定的身高h_i(1 <= h_i <= 1,000,000 - 好高的奶牛》_<)。設所有奶牛身高的和為s。書架的 高度為b,並且保證1 <= b <= s。 為了夠到比最高的那頭奶牛還要高的書架頂,奶牛們不得不象演雜技一般,一頭站在另一頭的背上,疊成一座「奶牛塔」。當然,這個塔的高度,就是塔中所有奶牛的身高之和。為了往書架頂上放東西,所有奶牛的身高和必須不小於書架的高度。 塔疊得越高便越不穩定,於是奶牛們希望找到一種方案,使得疊出的塔在高度不小於書架高度的情況下,高度盡可能小。你也可以猜到你的任務了:寫乙個程式,計算奶牛們疊成的塔在滿足要求的情況下,最少要比書架高多少。

第1行: 2個用空格隔開的整數:n 和 b * 第2..n+1行: 第i+1行是1個整數:h_i

第1行: 輸出1個非負整數,即奶牛們疊成的塔最少比書架高的高度

5 1631

356

我們選用奶牛1、3、4、5疊成塔,她們的總高度為3 + 3 + 5 + 6 = 17。任何方案都無法疊出高度為16的塔,於是答案為1。

本題有兩個做法,\(\huge\)。深搜入門題,找小的,沒找到就繼續找,以下**是深搜。

#include#include#include#include#includeusing namespace std;

#define ll long long

#define r register

using namespace std;

ll n,b,hi[21];

ll vis[21];

int ans=5201314;

void dfs(int sum)

for(int i=1;i<=n;i++)

if(vis[i]==0)

}int main()

dfs(0);

cout<\(\sum\)

洛谷 P2677 超級書架 2

farmer john最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。所有n 1 n 20 頭奶牛都有乙個確定的身高h i 1 h i 1,000,000 好高的奶牛 設所有奶牛身高的和為s。書架的 高度為b,並...

01揹包 洛谷 P2677 超級書架 2

farmer john最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。所有n 1 n 20 頭奶牛都有乙個確定的身高h i 1 hi 1,000,000 好高的奶牛 設所有奶牛身高的和為s。書架的 高度為b,並且...

洛谷P2676 超級書架

farmer john最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。所有n 1 n 20,000 頭奶牛都有乙個確定的身高h i 1 h i 10,000 設所有奶牛身高的和為s。書架的高度為b,並且保證 1 ...