P1731 生日蛋糕

2021-08-04 09:55:42 字數 803 閱讀 6193

原題鏈結

dfs

注意剪枝

這個剪枝還挺麻煩的

首先是最優性剪枝

如果當前的面積+之後可行的最小面積仍然大於現在的最優解

那麼捨去

可行性剪枝

如果當前的體積+之後可行的最大體積仍小於規定體積

捨去從大到小列舉是為了方便確定範圍

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define mod 1000000007

#define ll long long

using

namespace

std;

int n,m,ans=99999999;

void dfs(int x,int r,int h,int v,int s)

if(s+x>ans) return;

if(r<=0||h<=0) return;

if(v-r*r*h*x>0) return;

for(i=r;i>=x;i--)

for(j=h;j>=x;j--)

if(v-i*i*j>=0) dfs(x-1,i-1,j-1,v-i*i*j,s+2*i*j+(x==m)*i*i);

}int main()

洛谷 P1731 生日蛋糕

7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層 生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i include include include include using namespace std const int...

P1731生日蛋糕 減枝

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

洛谷 P1731 生日蛋糕

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