poj 1190 生日蛋糕(剪枝 深搜)

2021-07-04 01:30:27 字數 863 閱讀 4762

題目位址

題目大意:nπ體積m層的蛋糕,使得表面積最小

解題思路:將蛋糕從上到下編號1...m,從m層開始搜尋,搜尋過程中注意剪枝

三個剪枝條件:

1、已經搜尋過的體積加上還未搜尋過的最小體積不能比總體積n 大

2、已經搜尋過的表面積加上還未搜尋過的最小表面積不能比之前的最小總表面積best 大

3、n-sumv既所剩體積記作dv 還需要的表面積為s

s=2*ri*hi+2*r(i-1)*h(i-1)+... >=2*ri*hi*ri/r+2*r(i-1)*h(i-1)*r(i-1)/r+...

#include #include #include #include #include #include #include #include #include using namespace std;

const int inf=0xfffffff;

int n,m,minv[21],mins[21]; //minv[i]為從小到大的第i層的最小體積,最小表面積,從小到大(1...m)

int best=inf; //best 最小表面積

void dfs(int depth,int sumv,int sums,int r,int h) //深度優先搜尋 自底m向上搜尋 r h表示當前層得半徑和高度

//sumv已經用的總體積 sums已經生成的總表面積 }}

int main()

dfs(m,0,0,rmax,hmax);

if(best==inf)

best=0; //無解

printf("%d\n",best);

}return 0;

}

POJ1190 生日蛋糕(深搜 剪枝)

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

POJ1190 生日蛋糕 深搜

生日蛋糕 time limit 1000ms memory limit 10000k total submissions 18992 accepted 6769 description 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數...

POJ 1190 生日蛋糕(深搜 神奇的剪枝)

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