P1731 [NOI1999]生日蛋糕 一本通上也有。

这TM是一道极其简单的深搜剪枝(DP当然可以的了,这里我只讲深搜)。

首先圆柱公式:(有点数学基础都知道)
V=πR2H
S侧=π2RH
S底=πR2

状态描述

用( i , Ri-1 , Hi-1 , Vi-1 , Si-1 )

i表示打算去做第i层,

已知第i-1层蛋糕的半径和高:Ri-1 ,Hi-1

已知做完第i-1层蛋糕后剩下的蛋糕体积和获得的蛋糕表面积:Vi-1 , Si-1

初始状态:(1,R0,H0,n,0)

目标状态:(m+1,Rm,Hm,0,Sm)

于是,我们要找到一条从初始状态到任意目标状态的路径,并且Sm最小。

扩展的规则:

( i , Ri-1 , Hi-1 , Vi-1 , Si-1 )>>—>>( i+1,Ri,Hi,Vi,Si)

满足:
(1) Ri <Ri-1

(2) Hi <Hi-1

(3) Vi = Vi-1 - Ri* Ri* Hi

(4) Si = Si-1 + 2 * Ri* Hi

基本算法:

dfs ( i , Ri-1 , Hi-1 , Vi-1 , Si-1 )

{
1)如果做好了m层,

如果最终体积为0,刷新最小方案

return;回去再做其他的方案

2)枚举Ri,枚举Hi

Vi = Vi-1 - Ri* Ri* Hi

Si = Si-1 + 2 * Ri* Hi

去做下一层dfs ( i+1 , Ri , Hi, Vi , Si )

}

基本代码:

void Search (int i,int ri, int hi,int si,int vi,int num)
//num:记录上面还有num层没有堆
{
if(i>m)
{ if(vi==)
ans=min(ans,si);
return;
}
for(int r=num;r<=ri-;r++) //每层都比上层小,为整数,最小保证每层增加1
{
if(i==) si=r*r;//把上表面算在第1层
for(int h=num;h<=hi-;h++)
{
Search(i+,r,h,si+*r*h,vi-r*r*h,num-);
}
}
}

^持续更新中……

C++ 洛谷 P1731 [NOI1999]生日蛋糕的更多相关文章

  1. 【题解】洛谷P1731 [NOI1999] 生日蛋糕(搜索+剪枝)

    洛谷P1731:https://www.luogu.org/problemnew/show/P1731 思路 三重剪枝 当前表面积+下一层表面积如果超过最优值就退出 当前体积+下一层体积如果超过总体积 ...

  2. 洛谷 P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M ...

  3. 洛谷——P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...

  4. 洛谷 P1731 [NOI1999]生日蛋糕 && POJ 1190 生日蛋糕

    题目传送门(洛谷)  OR 题目传送门(POJ) 解题思路: 一道搜索题,暴力思路比较容易想出来,但是这道题不剪枝肯定会TLE.所以这道题难点在于如何剪枝. 1.如果当前状态答案已经比我们以前某个状态 ...

  5. 洛谷 P1731 [NOI1999]生日蛋糕(搜索剪枝)

    题目链接 https://www.luogu.org/problemnew/show/P1731 解题思路 既然看不出什么特殊的算法,显然是搜索... dfs(u,v,s,r0,h0)分别表示: u为 ...

  6. [洛谷P1731][NOI1999]生日蛋糕(dfs)(剪枝)

    典型的深搜+剪枝策略 我们采用可行性剪枝.上下界剪枝.优化搜索顺序剪枝.最优性剪枝的方面来帮助我们进行剪枝. 也许有人还不知道剪枝,那我就弱弱地为大家补习一下吧qwq: .优化搜索顺序: 在一些搜索问 ...

  7. 洛谷P1731 [NOI1999]生日蛋糕(爆搜)

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

  8. POJ1190 洛谷P1731 NOI1999 生日蛋糕

    生日蛋糕(蛋糕是谁?) Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20272   Accepted: 7219 Desc ...

  9. 洛谷 P1731 [NOI1999]生日蛋糕 题解

    每日一题 day53 打卡 Analysis 观察一个蛋糕的俯视图,上表面的面积其实就是最下面那一层的底面积,所以在第一次搜索的时候加入这个底面积,之后就只用考虑侧面积就好啦. 就是每次枚举r和h,如 ...

随机推荐

  1. Java数据存储机制的实现

    原文地址:http://yanwushu.sinaapp.com/java_data_storage/ Java程序在执行时须要为一系列的值或者对象分配内存,这些值都存在什么地方?用什么样的数据结构存 ...

  2. ASP CRUD

    //UserInfoList.html <!DOCTYPE html> <html><head><meta http-equiv="Content- ...

  3. 用Delphi将数据导入到Excel并控制Excel

    一.调用Excel的方法:一般情况下有两种方法调用Excel:1.  直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWo ...

  4. iOS Widget简单使用

    iOS的Widget类似Android的Notification设置flags为Notification.FLAG_ONGOING_EVENT后      OK,大约知道是什么意思了,现在可以开始码了 ...

  5. 【Git】整合分支那些事儿

    对于scm这个岗位来说,基线升级应该是这个岗位需要的必备技能了,现在来说说我司进行高通代码基线升级时选择的方式方法,供大家参考,也供自己学习积累. git这个工具大家都并不陌生,但是对于不经常提交代码 ...

  6. ToolBarTray与ToolBarPanel的区别

    ToolBarTray 类:表示处理ToolBar 的布局的容器.用于ToolBar控件模板之中. e.g. <ToolBarTray> <ToolBar> <Butto ...

  7. Python:Numpy学习

    import numpy as np # 基础属性 array = np.array([[[1,2,3], [0,0,1]], [[1,2,3], [0,0,1]]], dtype = np.int6 ...

  8. HTTP.SYS 详解 (网络转载)

    http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...

  9. 移动Web - 响应式布局开篇

    用到的工具: FireFox浏览器 Sublime Text 2 响应式布局定义: 2010年,Ethan Marcotte提出,可查看原文: 通俗地讲就是:百份比布局,根据不同设备显示不同布局: 这 ...

  10. Qt移动开发大部分的场景基本上实现没问题,listview支持刷新3000~5000的实时数据没有任何压力(QML的几个大型应用)

    作者:xq zh链接:https://www.zhihu.com/question/29636221/answer/47265577来源:知乎著作权归作者所有,转载请联系作者获得授权. 不知道vs移动 ...