洛谷 P1731 生日蛋糕

2021-08-01 22:43:38 字數 712 閱讀 3393

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

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

設從下往上數第i(1<=i<=m)層蛋糕是半徑為ri, 高度為hi的圓柱。當i

#include

#include

#include

#include

using namespace std;

const int inf = 1e9;

ints[25],v[25],m,n,ans;

void dfs(int mins,int minv,int level,int r,int h)

if(minv+v[level-1]>n||mins+s[level-1]>ans) return ;

if(((n-minv)/r*2+mins)>ans) return ; //這句遮蔽掉會t掉兩個點

//(n-minv)/r*2 剩下帶搜尋部分的最小面積

//mins,minv當前已搜尋過的面積和體積

for(int i=r-1;i>=level;i--)

}int main()

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

if(ans==inf) printf("%d\n",0);

else

printf("%d",ans);

return

0;}

洛谷 P1731 生日蛋糕

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

P1731 生日蛋糕

原題鏈結 dfs 注意剪枝 這個剪枝還挺麻煩的 首先是最優性剪枝 如果當前的面積 之後可行的最小面積仍然大於現在的最優解 那麼捨去 可行性剪枝 如果當前的體積 之後可行的最大體積仍小於規定體積 捨去從大到小列舉是為了方便確定範圍 include include include include inc...

P1731生日蛋糕 減枝

這道題可以通過一般的搜尋找到思路,但是很顯然會超時所以需要優化 其中需要三重優化 第一重是如果已用面積 最小面積仍然超過最優答案就返回 第二重是如果已用體積 最小體積仍然超過要求體積就返回 第三重剪枝是假設剩餘所有的體積都用來做下一層那麼此時下一層的體積是最大,而半徑會最大,從而表面積最小 incl...