題目描述
mr.w 要製作乙個體積為nπ的m 層生日蛋糕,每層都是乙個圓柱體。
設從下往上數第 i蛋糕是半徑為ri ,高度為 hi的圓柱。當iri+1且hi>hi+1 。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面(最下一層的下底面除外)的面積 q 最小。 令 q=sπ,請程式設計對給出的 n和 m ,找出蛋糕的製作方案(適當的 ri 和 hi 的值),使 s 最小。(除 q 外,以上所有資料皆為正整數)
輸入格式
第一行為 n ,表示待製作的蛋糕的體積為nπ ;
第二行為 m ,表示蛋糕的層數為m 。
輸出格式
輸出僅一行,乙個整數 (若無解則 )。
樣例資料範圍與提示
對於全部資料,1<=n<=10000,1<=m<=20。
#include
#include
#include
using
namespace std;
int n,m;
int minn=
1e9;
void
dfs(
int num,
int s,
int v,
int lastr,
int lasth)
if(v>=n)
//如果當前體積大於n,直接返回
return
;int t=m-num+1;
//還有剩餘t層沒有安排
if(v+t*lastr*lastr*lasth
//如果當前的體積加上最大體積仍然小於要求體積,不符合條件,返回
return;if
(num==1)
//最底層}}
else}}
}int
main()
poj 1190 生日蛋糕(剪枝 深搜)
題目位址 題目大意 n 體積m層的蛋糕,使得表面積最小 解題思路 將蛋糕從上到下編號1.m,從m層開始搜尋,搜尋過程中注意剪枝 三個剪枝條件 1 已經搜尋過的體積加上還未搜尋過的最小體積不能比總體積n 大 2 已經搜尋過的表面積加上還未搜尋過的最小表面積不能比之前的最小總表面積best 大 3 n ...
POJ1190 生日蛋糕(深搜 剪枝)
描述 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下底面...
POJ 1190 生日蛋糕(深搜 神奇的剪枝)
7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當iri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下底面除外 的面積q最小。令q...