生日蛋糕

时间限制: 1 Sec  内存限制: 128 MB
提交: 2  解决: 2
[提交] [状态] [讨论版] [命题人:admin]

题目描述

7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。
设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i<M时,要求Ri>Ri+1且Hi>Hi+1。
由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。
令Q= Sπ,请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。(除Q外,以上所有数据皆为正整数)

输入

有两行,第一行为N(N<=10000),表示待制作的蛋糕的体积为Nπ;第二行为M(M<=20),表示蛋糕的层数为M。

输出

仅一行,是一个正整数S(若无解则S=0)。

样例输入

100
2

样例输出

68

提示

体积V=πR2H
侧面积A’=2πRH
底面积A=πR2

题意

找每一层合适的r,h,使得最后的面积s最小。输出s。

分析

真的是毫无头绪,要不是在搜索专题真不觉得是个搜索题。

想明白了还是挺简单的。直接的dfs不可行,需要一些剪枝。

1、设下一层的最大体积为v,剩余体积为left_v,还剩余x层未搜索,如果x*v<left_v。一句话就是:剩下的体积用不完了。

2、如果当前的面积已经比之前记录的最小面积大,那就没有必要继续搜了。

///  author:Kissheart  ///
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<vector>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<deque>
#include<ctype.h>
#include<map>
#include<set>
#include<stack>
#include<string>
#define INF 0x3f3f3f3f
#define FAST_IO ios::sync_with_stdio(false)
const double PI = acos(-1.0);
const double eps = 1e-6;
const int MAX=1e5+10;
const int mod=1e9+7;
typedef long long ll;
using namespace std;
#define gcd(a,b) __gcd(a,b)
inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
inline ll qpow(ll a,ll b){ll r=1,t=a; while(b){if(b&1)r=(r*t)%mod;b>>=1;t=(t*t)%mod;}return r;}
inline ll inv1(ll b){return qpow(b,mod-2);}
inline ll exgcd(ll a,ll b,ll &x,ll &y){if(!b){x=1;y=0;return a;}ll r=exgcd(b,a%b,y,x);y-=(a/b)*x;return r;}
inline ll read(){ll x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f;}
//freopen( "in.txt" , "r" , stdin );
//freopen( "data.txt" , "w" , stdout );
int n,m;
int ans;
void dfs(int x,int left_v,int pre_r,int pre_h,int sum)
{if(!x && !left_v){if(ans)ans=min(sum,ans);elseans=sum;return ;}if(x*(pre_r-1)*(pre_r-1)*(pre_h-1)<left_v && x!=m)return ;if(x<=0 || left_v<=0 || (sum>=ans && ans))return ;for(int i=pre_r-1;i>=x;i--){for(int j=pre_h-1;j>=x;j--){int s=2*i*j;int v=i*i*j;if(x==m) s+=i*i;if(2*left_v/i+sum>=ans && ans)continue;dfs(x-1,left_v-v,i,j,sum+s);}}}
int main()
{scanf("%d%d",&n,&m);dfs(m,n,1000,100,0);printf("%d\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/Kissheart/p/9769216.html

upc 7833 生日蛋糕相关推荐

  1. POJ1190 生日蛋糕

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18103   Accepted: 6439 Description 7月17 ...

  2. POJ 1190 生日蛋糕 【DFS + 极限剪枝】

    题目传送门:http://poj.org/problem?id=1190 参考剪枝:https://blog.csdn.net/nvfumayx/article/details/6653111 生日蛋 ...

  3. 用python绘制漂亮的图形-用Python代码绘制漂亮的生日蛋糕,python

    #如何用python绘制生日蛋糕? 平时在经常在b站看到up主绘制生日蛋糕的精美图片.以前学过c.c++语言,也想着用C去绘制一些生日蛋糕,绘制一些女神喜欢的小礼物,不过实现起来比较麻烦,刚好学了一些 ...

  4. UPC个人训练赛第十五场(AtCoder Grand Contest 031)

    传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...

  5. poj 1190 生日蛋糕 难|供自己瞻仰

    7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当 ...

  6. POJ - 1190 生日蛋糕(dfs+剪枝)

    题目链接:点击查看 题目大意:给出生日蛋糕的总体积,以及有多少层,我们要求下面的每一层的高度和半径都要比上面一层的大,并且都是整数,求满足要求的最小表面积 题目分析:因为题目提到了半径和高度都是整数, ...

  7. DFS--POJ 1190 生日蛋糕

    Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri ...

  8. 【模拟】生日蛋糕(jzoj 1613)

    生日蛋糕 题目大意: 一个正方形蛋糕,竖着横着各切一刀,使他变成四块正方形蛋糕,蛋糕中有一些巧克力,而小明只能拿巧克力最少的一块,请问小明要怎么切才能吃到最多的巧克力 样例输入 8 -#-#- .## ...

  9. 0076-小升初1:生日蛋糕

    题目 小升初1:生日蛋糕 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 一个中学生(在线测评系统的系统管理员)过生日了,他邀 ...

  10. 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833

    [题目链接] ybt 1084:幂的末尾 OpenJudge NOI 小学奥数 7833:幂的末尾 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\ ...

最新文章

  1. 2.2.5 调度算法:时间片轮转 优先级调度 多级反馈队列
  2. Eschool校园网平台介绍
  3. 1高并发服务器:多路IO之select
  4. vue踩坑记-在项目中安装依赖模块npm install报错
  5. 学习进度条(第十五周)
  6. 【招聘(重庆)】新空间(重庆)科技有限公司招聘.NET Core
  7. idea无法导入主题jar包_总结IDEA开发的26个常用设置
  8. Excel 批量删除空白行,你用了 2 小时,同事 3 分钟就搞定了
  9. 四气调神大论篇 :四季养生法
  10. 《面膜行业网络关注度分析报告》
  11. SQL-spj库创建脚本
  12. (轉貼) 千頭萬緒 : 學習多執行緒程式設計的好書 (.NET) (Java)
  13. 七鑫易维彭凡演讲实录:眼球追踪技术让VR更“人性”
  14. DOM常用属性【DOM】
  15. html屏幕有闪动,笔记本电脑屏幕出现条纹闪烁怎么解决【解决方法】
  16. 基于微信小程序停车场自助停取车设计与实现(论文+程序设计源码+数据库文件)
  17. oa系统对服务器的要求1000台,OA系统服务器规划建议
  18. android 计入高德地图——实时天气和天气预报
  19. RabbitMQ入门教程(四):工作队列(Work Queues)
  20. 重学数据结构与算法系列:一文讲透贪心算法

热门文章

  1. 趣达学院学习有奖活动!
  2. CGContextRef:mask和layer绘图
  3. MySQL心得1--数据库的基本概念
  4. 提取身份证信息的自定义函数
  5. postgresql查看表的创建者和表的权限
  6. Windows+Python3.7下自动生成requirements.txt文件
  7. bert之我见 - positional encoding
  8. 【脑洞大开】假如BERT系列论文变成Commit History
  9. 20200210_logistic回归来预测违约的概率
  10. PyTorch学习—23.PyTorch的基本使用