生日蛋糕 POJ – 1190

生日蛋糕 POJ – 1190

原创

wx62a9af7b9205e博主文章分类:搜索 ©著作权

文章标签 DFS poj #include 最优解 i++ 文章分类 Hadoop 大数据

©著作权归作者所有:来自51CTO博客作者wx62a9af7b9205e的原创作品,请联系作者获取转载授权,否则将追究法律责任

还是有些迷。。留坑

前两个剪枝是看在当前情况下能不能构成一个蛋糕

第三个剪枝是看当前情况下能不能形成最优解





using namespace std;


int prevv[50],press[50];
int vv,ll,ans;

void init()
{
int i;
for(i=1;i20;i++)
{
prevv[i]=prevv[i-1]+i*i*i;
press[i]=press[i-1]+2*i*i;
}
return;
}

void dfs(int r,int h,int l,int s,int v)
{
int i,j,maxx;

if(l==0)
{
if(v==vv)
{
ans=min(ans,s);
}
return;
}

if(vv-v<prevv[l]||ans-s<press[l]) return;
if(l<ll&&2*(vv-v)/r>ans-s) return;

for(i=r;i>=l;i--)
{
if(l==ll)
{
s=i*i;
}
maxx=(vv-prevv[l-1]-v)/(i*i);
for(j=min(maxx,h);j>=l;j--)
{
dfs(i-1,j-1,l-1,s+2*i*j,v+i*i*j);
}
}
return;
}

int main()
{
int i,j;
init();
while(scanf("%d%d",&vv,&ll)!=EOF)
{
ans=N;
dfs((int)sqrt(vv),vv,ll,0,0);
printf("%d\n",ans);
}
return 0;
}
  • 收藏
  • 评论
  • *举报

上一篇:炮兵阵地 POJ – 1185

下一篇:纪念SlingShot FZU – 1683

Original: https://blog.51cto.com/u_15686209/5386270
Author: wx62a9af7b9205e
Title: 生日蛋糕 POJ – 1190

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517310/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球