生日蛋糕 POJ - 1190
2017-11-07 15:20
387 查看
点击打开链接
参考博客点击打开链接
还是有些迷。。留坑
前两个剪枝是看在当前情况下能不能构成一个蛋糕
第三个剪枝是看当前情况下能不能形成最优解
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 0x3f3f3f3f
int prevv[50],press[50];
int vv,ll,ans;
void init()
{
int i;
for(i=1;i<=20;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;
}
参考博客点击打开链接
还是有些迷。。留坑
前两个剪枝是看在当前情况下能不能构成一个蛋糕
第三个剪枝是看当前情况下能不能形成最优解
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 0x3f3f3f3f
int prevv[50],press[50];
int vv,ll,ans;
void init()
{
int i;
for(i=1;i<=20;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;
}
相关文章推荐
- POJ1190 生日蛋糕(DFS剪枝)
- poj 1190 生日蛋糕
- poj 1190 生日蛋糕( 深搜+2类重要剪枝总结 )
- POJ 1190 生日蛋糕
- poj 1190 生日蛋糕(深搜+剪枝技巧)
- POJ 1190 生日蛋糕
- poj 1190 生日蛋糕 , 强剪枝
- POJ 1190-生日蛋糕(dfs 深度搜索 优化减枝)
- poj 1190 生日蛋糕(dfs, 剪枝)
- Poj 1190 生日蛋糕
- POJ1190生日蛋糕[DFS 剪枝]
- POJ 1190 生日蛋糕 DFS + 剪枝
- Poj 1190 生日蛋糕 (DFS 剪枝)
- poj1190 生日蛋糕
- 1190 poj 生日蛋糕
- poj 1190 dfs+剪枝(生日蛋糕)
- POJ - 1190 生日蛋糕(深搜+神奇的剪枝)
- POJ 1190 生日蛋糕
- POJ 1190生日蛋糕
- POJ 1190 生日蛋糕 搜索加剪枝