upc 7833 生日蛋糕
生日蛋糕
时间限制: 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外,以上所有数据皆为正整数)
输入
输出
样例输入
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 生日蛋糕相关推荐
- POJ1190 生日蛋糕
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18103 Accepted: 6439 Description 7月17 ...
- POJ 1190 生日蛋糕 【DFS + 极限剪枝】
题目传送门:http://poj.org/problem?id=1190 参考剪枝:https://blog.csdn.net/nvfumayx/article/details/6653111 生日蛋 ...
- 用python绘制漂亮的图形-用Python代码绘制漂亮的生日蛋糕,python
#如何用python绘制生日蛋糕? 平时在经常在b站看到up主绘制生日蛋糕的精美图片.以前学过c.c++语言,也想着用C去绘制一些生日蛋糕,绘制一些女神喜欢的小礼物,不过实现起来比较麻烦,刚好学了一些 ...
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
- poj 1190 生日蛋糕 难|供自己瞻仰
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当 ...
- POJ - 1190 生日蛋糕(dfs+剪枝)
题目链接:点击查看 题目大意:给出生日蛋糕的总体积,以及有多少层,我们要求下面的每一层的高度和半径都要比上面一层的大,并且都是整数,求满足要求的最小表面积 题目分析:因为题目提到了半径和高度都是整数, ...
- DFS--POJ 1190 生日蛋糕
Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri ...
- 【模拟】生日蛋糕(jzoj 1613)
生日蛋糕 题目大意: 一个正方形蛋糕,竖着横着各切一刀,使他变成四块正方形蛋糕,蛋糕中有一些巧克力,而小明只能拿巧克力最少的一块,请问小明要怎么切才能吃到最多的巧克力 样例输入 8 -#-#- .## ...
- 0076-小升初1:生日蛋糕
题目 小升初1:生日蛋糕 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 一个中学生(在线测评系统的系统管理员)过生日了,他邀 ...
- 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
[题目链接] ybt 1084:幂的末尾 OpenJudge NOI 小学奥数 7833:幂的末尾 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\ ...
最新文章
- 2.2.5 调度算法:时间片轮转 优先级调度 多级反馈队列
- Eschool校园网平台介绍
- 1高并发服务器:多路IO之select
- vue踩坑记-在项目中安装依赖模块npm install报错
- 学习进度条(第十五周)
- 【招聘(重庆)】新空间(重庆)科技有限公司招聘.NET Core
- idea无法导入主题jar包_总结IDEA开发的26个常用设置
- Excel 批量删除空白行,你用了 2 小时,同事 3 分钟就搞定了
- 四气调神大论篇 :四季养生法
- 《面膜行业网络关注度分析报告》
- SQL-spj库创建脚本
- (轉貼) 千頭萬緒 : 學習多執行緒程式設計的好書 (.NET) (Java)
- 七鑫易维彭凡演讲实录:眼球追踪技术让VR更“人性”
- DOM常用属性【DOM】
- html屏幕有闪动,笔记本电脑屏幕出现条纹闪烁怎么解决【解决方法】
- 基于微信小程序停车场自助停取车设计与实现(论文+程序设计源码+数据库文件)
- oa系统对服务器的要求1000台,OA系统服务器规划建议
- android 计入高德地图——实时天气和天气预报
- RabbitMQ入门教程(四):工作队列(Work Queues)
- 重学数据结构与算法系列:一文讲透贪心算法