NOI1999 生日蛋糕

2022-04-30 11:42:13 字數 1225 閱讀 6639

7月17日是mr.w的生日,acm-thu為此要製作乙個體積為nπ的m層

生日蛋糕,每層都是乙個圓柱體。

設從下往上數第i(1<=i<=m)層蛋糕是半徑為\(r_i\), 高度為\(h_i\)的圓柱。當i\(r_i>r_\)​ 且 \(h_i>h_\)​ 。

由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面(最下一層的下底面除外)的面積q最小。

令\(q= sπ\)

請程式設計對給出的n和m,找出蛋糕的製作方案(適當的ri和hi的值),使s最小。

(除q外,以上所有資料皆為正整數)

輸入格式:

有兩行,第一行為n(n<=20000),表示待製作的蛋糕的體積為nπ;第二行為m(m<=15),表示蛋糕的層數為m。

輸出格式:

僅一行,是乙個正整數s(若無解則s=0)。

輸入樣例#1:

1002

輸出樣例#1:

剪枝+搜尋

本來自己的剪枝

如果當前答案比最優解大,return

如果當前答案比要求體積大,return

如果當前體積+後面的最大體積

這樣wa了乙個點.

看了題解之後,把第三個剪枝換成了

如果當前答案+後面能得到的最大表面積依然》=答案,return

其實還有一些其他的剪枝,但這些就夠了

#include#define in(i) (i=read())

using namespace std;

inline int read()

while(i>='0' && i<='9')

return ans*f;

}const int inf=2147483647;

int n,m,ans=inf;

void dfs(int floor,int sum,int v,int r,int h)

}}int main()

{ in(n); in(m);

dfs(1,0,0,sqrt(n)+1,n+1);

if(ans==inf) cout<<0

noi 1999 生日蛋糕

題目描述 4月16日是nanae的生日,josnch為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下...

NOI1999 生日蛋糕

noi1999 生日蛋糕 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 ...

NOI1999 生日蛋糕題解

還是被這個立體的結構嚇到了,隔了半年才 題目描述 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層 生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當ir i r ri ri 1 且h i h hi hi 1 由於要在蛋糕上抹...