「NOI1999」「LuoguP1731」生日蛋糕(爆搜剪枝
题目背景
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<=20000),表示待制作的蛋糕的体积为Nπ;第二行为M(M<=15),表示蛋糕的层数为M。
输出格式:
仅一行,是一个正整数S(若无解则S=0)。
输入输出样例
题解
可以说是童年阴影了。
众所周知的一道爆搜题,考点大概是剪枝?
/*
qwerta
P1731 [NOI1999]生日蛋糕
Accepted
100
代码 C++,1.45KB
提交时间 2018-10-10 11:55:48
耗时/内存
760ms, 1256KB
*/
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define R register
int n,m;
long long q=;
int f[][][];
int fx[][];
void search(int d,int rbef,int hbef,int vres,int sbef)//d:深度 rbef:上一层半径 hbef:上一层高度 vres:还剩的体积 sbef:已经用了多少面积
{
if(d==m+)
{
if(vres==)
q=min(q,(long long)sbef);//搜到了就更新
return;
}
if(vres<=)return;//没体积了,剪掉
if(sbef>q)return;//面积大了,剪掉
if(rbef<=(m-d+))return;//半径小了不够搭这么多层,剪掉
if(hbef<=(m-d+))return;//高度矮了不够搭这么多层,剪掉
if(*vres/rbef+sbef>q)return;//划重点!如果当前体积的最小面积还大了,剪掉
//
if(fx[d][])//记忆化 fx[d][0]记录还剩d层时至少要的体积,fx[d][1]为面积
{
if(fx[d][]>vres)return;//剩体积的不够用,剪掉
if(fx[d][]+sbef>q)return;//最小的法子涂也面积大了,剪掉
}
else
{
int v=,s=;
for(R int i=d;i<=m;++i)//for一遍
{
int r=(m+-i);
int h=(m+-i);
v+=r*r*h,s+=*r*h;
}
fx[d][]=v;
fx[d][]=s;
if(v>vres)return;
if(s+sbef>q)return;
}
//
if(f[d][rbef][hbef])//记录在d,rbef,hbef的情况下的最大体积
{
if(f[d][rbef][hbef]<vres)return;//往大了搭还小了,剪掉
}
else
{
int v=;
for(R int i=d;i<=m;++i)
{
int r=(rbef-(i-(d-)));
int h=(hbef-(i-(d-)));
v+=r*r*h;
}
f[d][rbef][hbef]=v;
if(v<vres)return;
}
//剪爽了,开始搜
for(R int r=;r<rbef;++r)
for(R int h=;h<hbef;++h)
{
int s=;
if(d==)s=r*r;
search(d+,r,h,vres-r*r*h,sbef+s+*r*h);
}
return;
}
int main()
{
//freopen("a.in","r",stdin);
scanf("%d%d",&n,&m);
search(,,,n,);
cout<<q;
return ;
}
代码又慢又长哦,真的要看吗QAQ
「NOI1999」「LuoguP1731」生日蛋糕(爆搜剪枝的更多相关文章
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- HDU-4848 Wow! Such Conquering! 爆搜+剪枝
Wow! Such Conquering! 题意:一个n*n的数字格,Txy表示x到y的时间.最后一行n-1个数字代表分别到2-n的最晚时间,自己在1号点,求到达这些点的时间和的最少值,如果没有满足情 ...
- 洛谷P1731 [NOI1999]生日蛋糕(爆搜)
题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...
- 「NOIP2017」「LuoguP3959」 宝藏(爆搜
题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nn 个深埋在地下的宝藏屋, 也给出了这 nn 个宝藏屋之间可供开发的mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏. ...
- 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇
http://www.4gamer.net/games/216/G021678/20140714079/ 连载第2回的本回, Arc System Works开发的格斗游戏「GUILTY G ...
- 使用注册表优化终端、编辑器的中英字体混合显示,如「Consolas + 雅黑」「Monaco + 雅黑」
在终端.cmd.编辑器中偶尔会有中文字符出现,Windows下默认的点阵字体「宋体」和等宽英文字符放在一起非常违和.一个解决方法是下载混合字体,比如「Consolas + YAHEI hybrid」, ...
- 众安「尊享e生」果真牛的不可一世么?
近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...
- XCActionBar 「Xcode 中的 Alfred」
下载地址:https://github.com/pdcgomes/XCActionBar 基本命令: (1)「command+shift+8」或者双击「command」键可以打开「动作输入框窗口」 ( ...
- Git 执行 「fork 出来的仓库」和「最新版本的原仓库」内容同步更新
当我们在 GitHub 上 fork 出一个仓库后,如果原仓库更新了,此时怎样才能保证我们 fork 出来的仓库和原仓库内容一致呢?我们一般关注的是仓库的 master(主干分支)的内容,通过以下步骤 ...
随机推荐
- 【Lintcode】二叉树的最大深度 - 比较简单,用递归比较好,不递归也能做,比较麻烦
给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的距离. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的 ...
- 最全的HTTP头部信息分析
HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Chars ...
- css hack(部分)
一.去掉图片间隙:hack1.img{ display:block: }hack2.将<div></div>与<img>写在同一行 二.ie6双倍浮向(双倍边距)出 ...
- Android开发之实现锁屏功能
锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1 创建广播接收者,实现De ...
- 如何重建一个损坏的调用堆栈(callstack)
原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupt ...
- OpenCV load 运行出错 cv::Exception 出错
今天在使用OpenCV的load函数时,出现错误,代码如下: cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); ...
- Mataplotlib事例操作
刚开始需要的文件是和前边的两个连载一起的
- Android 短信验证码控件
Android 短信验证码控件,便于项目中使用统一样式,统一提示改动.个人觉得挺好用的 <span style="font-size:18px;">public cla ...
- echarts 饼状图
说明:这是我做项目时自己写的小例子,里面有冗余的参数. 开发环境 vs2012 asp.net mvc4 c# 1.显示效果 2.HTML代码 <%@ Page Language=" ...
- 图片转base64存储
图片转base64存储 base64.b64encode(r.content) url='http://www.heze.cn/info/themes/heze/Public/tel/?tel=MDU ...