生日蛋糕 POJ - 1190 (搜索+剪枝)
设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。
由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。
令Q = Sπ
请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。
(除Q外,以上所有数据皆为正整数)
Input
Output
Sample Input
100
2
Sample Output
68
Hint
体积V = πR
2H
侧面积A' = 2πRH
底面积A = πR
2
#include<cstdio>
#include<cstdio>
#include<algorithm>
#include<math.h>
using namespace std; int n,m,ans;
int minV[];
int minS[];
void dfs(int now,int SumS,int SumV,int r,int h,int last)
{
if(SumS + minS[now] > ans)
return;
if(SumV + minV[now] > n)
return;
if(SumS + *(n-SumV)/last >= ans)
return;
if(!now)
{
if(SumV == n && SumS < ans)
ans = SumS;
return;
}
int maxR = min(r,(int)sqrt(n-SumV-minV[now-]));
for(int i=maxR;i>=now;i--)
{
if(now == m)SumS = i*i;
int maxH = min((n-minV[now-]-SumV)/(i*i), h);
for(int j=maxH;j>=now;j--)
{
dfs(now-,SumS+*i*j,SumV+i*i*j,i-,j-,r);
}
}
} int main()
{
ans = 0x3f3f3f3f;
for(int i=; i<=; i++)
{
minV[i] += minV[i-] + i*i*i;
minS[i] += minS[i-] + *i*i;
}
scanf("%d%d",&n,&m);
dfs(m,,,,,);
if(ans == 0x3f3f3f3f)ans = ;
printf("%d\n",ans);
}
生日蛋糕 POJ - 1190 (搜索+剪枝)的更多相关文章
- 生日蛋糕 POJ - 1190 搜索 数学
http://poj.org/problem?id=1190 题解:四个剪枝. #define _CRT_SECURE_NO_WARNINGS #include<cstring> #inc ...
- 洛谷 P1731 [NOI1999]生日蛋糕 && POJ 1190 生日蛋糕
题目传送门(洛谷) OR 题目传送门(POJ) 解题思路: 一道搜索题,暴力思路比较容易想出来,但是这道题不剪枝肯定会TLE.所以这道题难点在于如何剪枝. 1.如果当前状态答案已经比我们以前某个状态 ...
- poj 2531 搜索剪枝
Network Saboteur Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u ...
- 生日蛋糕 POJ - 1190
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当 ...
- POJ 1190 生日蛋糕 【DFS + 极限剪枝】
题目传送门:http://poj.org/problem?id=1190 参考剪枝:https://blog.csdn.net/nvfumayx/article/details/6653111 生日蛋 ...
- poj 1190 DFS 不等式放缩进行剪枝
F - (例题)不等式放缩 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submi ...
- 搜索+剪枝——POJ 1011 Sticks
搜索+剪枝--POJ 1011 Sticks 博客分类: 算法 非常经典的搜索题目,第一次做还是暑假集训的时候,前天又把它翻了出来 本来是想找点手感的,不想在原先思路的基础上,竟把它做出来了而且还是0 ...
- 【迭代博弈+搜索+剪枝】poj-1568--Find the Winning Move
poj 1568:Find the Winning Move [迭代博弈+搜索+剪枝] 题面省略... Input The input contains one or more test cas ...
- NOIP2015 斗地主(搜索+剪枝)
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 270 Solved: 192[Submit][Status] ...
随机推荐
- jenkins 安装网址
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins
- PID控制器开发笔记之一:PID算法原理及基本实现
在自动控制中,PID及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景. ...
- GitHub访问慢
问题描述 一直都觉得访问 GitHub 时速度非常慢,刷新一下都要等好久!于是尝试一下能否解决掉... github.com assets-cdn.github.com avatar2.githubu ...
- java方法重载和重写
1.java的方法重载和重写,表示两种不同的类型.this关键字,出现在类的构造方法中,代表使用该构造方法所创建的对象.,this可以出现在实例方法中核构造方法中.但是不能出现在类方法中.实例方法只能 ...
- django----常用功能
request.path_info 获取url地址
- uva11827 处理下输入
/*0.012s*/ #include<cstdio> #include<algorithm> using namespace std; ], n; int gcd(int a ...
- pycharm导入本地py文件时,模块下方出现红色波浪线时如何解决
有时候导入本地模块或者py文件时,下方会出现红色的波浪线,但不影响程序的正常运行,但是在查看源函数文件时,会出现问题 问题如下: 解决方案: 1. 进入设置,找到Console下的Python Co ...
- python目录和文件的列表清单
import os # 通过给定的文件夹,列举出这个文件夹当中,所有的文件,以及文件夹,子文件夹当中的所有文件def listFilesToTxt(dir,file): # 1.列举出,当前给定的文件 ...
- exec函数族
进程程序替换 进程程序替换原理 fork创建子进程执行的是和父进程相同的程序(也有可能是某个分支),通常fork出的子进程是为了完成父进程所分配的任务,所以子进程通常会调用一种exec函数(六种中的任 ...
- 设置git记住用户和密码
git config --global credential.helper store