洛谷 1731 生日蛋糕 dfs+剪枝
来源:互联网 发布:电脑绘画卡通人物软件 编辑:程序博客网 时间:2024/05/23 00:41
题目:
https://www.luogu.org/problem/show?pid=1731
加了四个剪枝;
明确枚举的对象——每层的高度和半径;
∑表面积=∑圆柱侧面积+最大的底面积;(画图);
总结:
注意细节;
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;int V,n,ans=1<<23;int minV[1001],minA[1001];int calc(int tot,int r,int h){//每一层都为最大体积的情况, int v=0; for(int i=0;i<tot;i++)//h,r每次只减1; v+=(r-i)*(r-i)*(h-i); return v;}void dfs(int v,int tot,int r,int h,int s){ if(tot==0) { if(v) return; ans=min(s,ans); return; } if(v<=0) return; if(s+minA[tot]>=ans) return;//前面的面积+当前最小面积>答案 if(minV[tot]>v) return;//剩余体积<当前最小体积都无法更新; if(calc(tot,r,h)<v) return;//剩余层数"用最大的体积"仍小于剩余体积 if(r<tot || h<tot) return;//r,h至少等于层数; for(int i=r;i>=tot;i--)//半径; { if(tot==n) s=i*i; for(int j=h;j>=tot;j--)//高度; dfs(v-i*i*j,tot-1,i-1,j-1,s+2*i*j); } return;}void solve(){ scanf("%d%d",&V,&n); for(int i=1;i<=n;i++)//预处理每层最小体积与面积.方便剪枝; minV[i]=minV[i-1]+i*i*i,minA[i]=minA[i-1]+2*i*i; if(minV[n]>V) {cout<<0<<endl;return;}// cout<<minV[n]<<endl; int maxH=(V-minV[n-1])/(n*n)+1;//V-minV[n-1]为最大体积,n为最小半径; int maxR=sqrt((double)(V-minV[n-1])/n)+1;//同理; dfs(V,n,maxR,maxH,0); if(ans== 1<<23 ) cout<<"0"; else cout<<ans;}int main(){ solve(); return 0;}
阅读全文
1 0
- 洛谷 1731 生日蛋糕 dfs+剪枝
- poj 1190 生日蛋糕 dfs 剪枝
- poj 1190 生日蛋糕 dfs剪枝
- poj1190生日蛋糕(dfs+剪枝)
- Poj 1190 生日蛋糕 (DFS 剪枝)
- poj1190 生日蛋糕 dfs神剪枝
- poj 1190 生日蛋糕(dfs 剪枝)
- poj 1190 生日蛋糕(dfs, 剪枝)
- POJ1190 生日蛋糕(DFS剪枝)
- poj1190(dfs+剪枝)生日蛋糕
- [NOI1999]生日蛋糕(dfs剪枝)
- POJ1090,生日蛋糕,dfs,经典的剪枝
- poj 1190 生日蛋糕(DFS+剪枝)
- POJ 1190 生日蛋糕(DFS:优化剪枝)
- poj 1190 dfs+剪枝(生日蛋糕)
- hdu 1190 生日蛋糕(dfs+剪枝)
- POJ 1190 生日蛋糕 (dfs + 神剪枝)
- HDU POJ 1190 生日蛋糕 dfs + 剪枝
- JAVA_the user operation is waiting怎么办
- Linux如何更新软件源
- Linux 将一般的用户加入sudo组is_not_in_the_sudoers_file._This_incident_will_be_reported解决方法
- 火狐浏览器Firefox 如何下载网页的SWF视频,硅谷动力的网站视频怎么下载
- Partition Array by Odd and Even
- 洛谷 1731 生日蛋糕 dfs+剪枝
- Solidworks drwdot文件如何打开,如何制作Solidworks工程图模板
- 1055. 集体照 (25)
- Office EXCEL 2010如何取消宏密码保护
- Office EXCEL 2010如何启用宏编辑器,打开VB编辑器
- Office EXCEL 表格如何设置某个单元格是选择项,如何设置二级下拉菜单 MS Office版
- Error:Tag <uses-permission> attribute name has invalid character ' '.
- 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度
- Office EXCEL 表格如何设置某个单元格是选择项,如何设置二级下拉菜单 WPS版