1441:【例题2】生日蛋搞
【题目描述】
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=πR2HV=πR2H
侧面积A=2πRHA=2πRH
底面积A=πR2
思路:
dfs很简单但是如果直接用dfs暴力的话会TLE!
那么该怎么剪枝呢?
1 要是剩下体积除以最大(虽然取不到)半径所得到的表面积+累计表面积大于答案你还搜个屁!
2 要是剩下来的体积已经小于该层最小体积了你还搜个屁!
3 还有为了剪枝,我们要起先预处理某一层的最大不可的表面积和体积你还搜个屁!
4 要是最小面积+当前累计表面积已经比已知答案大了你还搜个屁!
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #include<map> #include<string> #include<cstring> using namespace std; ; ; ],b[]; inline int read() { char c = getchar(); , f = ; ') { ; c = getchar(); } + c - ', c = getchar(); return x * f; } /* 体积V=πR2H 侧面积A=2πRH 底面积A=πR2 */ void dfs(int v/*已用体积*/,int s/*表面积*/,int p/*剩余层数 注意是剩余*/,int r/*半径*/,int h/*搞*/) { ) { //如果已经搜没有剩余的层数了那还搜个屁! if (v==n&&s<ans) ans=s; return ; } /*剪枝大法好*/ ]>n) return ;//如果已用体积加上这层的最大体积大于了n那还搜个屁! ]>ans) //.............那还搜个屁! return ; *(n-v)/r+s>=ans) return; //当前的表面积+余下的侧面积>当前最优值那还搜个屁! /*剪枝大法好*/ ; i>=p; i--) { //半径 if(p==m) s=i*i; ])/(i*i),h-); for(int j=pyyyyyy; j>=p; j--) //高 dfs(v+i*i*j,s+*i*j,p-,i,j); } } int main() { n=read(); m=read(); cin>>n>>m; ans=maxn; a[]=; b[]=; ; i<; i++) { a[i]=a[i-]+*i*i;//i层的最大表面积 b[i]=b[i-]+i*i*i;//i层的最大体积 体积V=πR2H } dfs(,,m,n+,n+);//进行搜索 //5个量的意思看上面 if(ans==maxn) cout<<; else cout<<ans; ; }
【dfs】p1731 生日蛋糕的更多相关文章
-
洛谷P1731生日蛋糕(dfs+剪枝)
P1731 生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为R ...
-
洛谷 P1731 生日蛋糕
/*洛谷 1731 生日蛋糕 傻傻的-1 T成了傻逼*/ #include<cstdio> #include<iostream> #include<cmath> # ...
-
洛谷P1731 生日蛋糕
李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int ...
-
P1731 生日蛋糕
题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...
-
[洛谷P1731][NOI1999]生日蛋糕(dfs)(剪枝)
典型的深搜+剪枝策略 我们采用可行性剪枝.上下界剪枝.优化搜索顺序剪枝.最优性剪枝的方面来帮助我们进行剪枝. 也许有人还不知道剪枝,那我就弱弱地为大家补习一下吧qwq: .优化搜索顺序: 在一些搜索问 ...
-
洛谷 P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M ...
-
洛谷——P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...
-
C++ 洛谷 P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 一本通上也有. 这TM是一道极其简单的深搜剪枝(DP当然可以的了,这里我只讲深搜). 首先圆柱公式:(有点数学基础都知道) V=πR2H S侧=π2RH S底= ...
-
POJ1190生日蛋糕[DFS 剪枝]
生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18236 Accepted: 6497 Description ...
随机推荐
-
【ASP.net】Equals 和 == 的区别
在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...
-
四则运算2--c++
1.设计思路: 上篇已写,不在解释..... 2.源代码: #include<iostream.h>#include<stdlib.h>#include "time. ...
-
Apache Tiles 2.x 应用指南(转)
转自:http://jaymsimusic.iteye.com/blog/1138906 Apache Tiles 2.x 应用指南 博客分类: Apache Tiles Jakarta Tile ...
-
Today See>;
http://wenku.baidu.com/view/b08f3575f46527d3240ce061.html http://wenku.baidu.com/view/a3419558be2348 ...
-
express4.0之后不会解析req.files,必须加一个插件multer
express 4 + 用multer express4.0之后不会解析req.files,必须加一个插件multer http://www.w3school.com.cn/tags/att_form ...
-
API WAVE 专栏
关于音频输入.输出设备的使用 源:API WAVE 专栏
-
Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
-
【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)
1 数字IC(ASIC)设计流程: IC设计分为前端和后端.前端设计主要将HDL语言-->网表,后端设计是网表-->芯片版图. 前端主要有需求分析与架构设计.RTL设计.仿真验证.逻辑综合 ...
-
Element-ui 中dialog的使用方法
<template> <div> <el-button type="text" @click="dialogFormVisible = tr ...
-
Edit Distance II
Given two strings S and T, determine if they are both one edit distance apart. Example Given s = &qu ...