月17日是mr.w的生日,acm-thu為此要製作乙個體積為nπ的m層生日蛋糕,每層都是乙個圓柱體。
設從下往上數第i層蛋糕是半徑為ri, 高度為hi的圓柱。
當i < m時,要求ri > ri+1且hi > hi+1。
由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面(最下一層的下底面除外)的面積q最小。
令q = sπ ,請程式設計對給出的n和m,找出蛋糕的製作方案(適當的ri和hi的值),使s最小。
除q外,以上所有資料皆為正整數 。
輸入格式
輸入包含兩行,第一行為整數n(n <= 10000),表示待製作的蛋糕的體積為nπ。
第二行為整數m(m <= 20),表示蛋糕的層數為m。
輸出格式
輸出僅一行,是乙個正整數s(若無解則s = 0)。
資料範圍
1≤n≤10000,
1≤m≤20
輸入樣例:
1002
輸出樣例:
68思路:從最下一層向上列舉,確定了最下一層就能夠確定表面層的面積,之後的層就是算邊上的面積。到了最上面一層就確定了結果,遍歷完所有結果,答案取最小的即可。
然後再加上幾個剪枝:
當前體積+剩餘層數最小體積不能大於總體積。當前面積加上剩餘層數最小面積不能大於當前最優解。當前面積加上剩餘體積的最小面積不能大於最優解。
#include
#include
#include
#include
using
namespace std;
const
int inf =
0x3f3f3f3f
;int n,m,ans,v,s;
int h[
10005
],r[
10005
],minv[
10005
],mins[
10005];
void
dfs(
int dep)
for(r[dep]
=min((
int)
sqrt
(n - v)
,r[dep +1]
-1);r[dep]
>= dep;r[dep]--)
}}intmain()
ans =0;
dfs(m)
;printf
("%d\n"
,ans)
;return0;
}
AcWing 168 生日蛋糕
題目描述 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下底面除外 的面...
1710 生日蛋糕
1710 生日蛋糕1999年noi全國競賽 時間限制 2 s 空間限制 128000 kb 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當iri 1且hi hi 1。由於要在...
poj 1190 生日蛋糕(DFS 剪枝)
生日蛋糕 time limit 1000ms memory limit 10000k total submissions 12965 accepted 4564 description 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數...