Mr.W 要制作一个体积为 N*π 的 M 层生日蛋糕,每层都是一个圆柱体。

设从下往上数第 i 蛋糕是半径为 R_i,高度为 H_i 的圆柱。当 i<M 时,要求 R_i>R_{i+1} 且 H_i>H_{i+1} 。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积 Q 最小。

令Q=S π ,请编程对给出的 N 和 M ,找出蛋糕的制作方案(适当的 R_i 和 H_i 的值),使 S 最小。(除 Q 外,以上所有数据皆为正整数)

输入格式

第一行为 N ,表示待制作的蛋糕的体积为Nπ ;

第二行为 M ,表示蛋糕的层数为 M 。

输出格式

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

样例
输入复制
100
2
输出复制
68

数据范围与提示

对于全部数据N<=1E4,M<=20。

________________________________________

重新做了一下,几乎所有的剪枝都想到了,可是搜索顺序还是出问题了!

第34、35行如果从小到大循环就会挂掉20分!

为什么!!!???

________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,m;
4 int ans=0x7fffffff;
5 int vv[25],ss[25];
6 inline void dfs(int c,int r,int h,int v,int s)
7 {
8
9
10 if(c==m+1 && 0==v && s<ans)
11 {
12 ans=s;
13 return ;
14 }
15 if(c>m)return;
16 if(r*r*h+vv[c+1]>v)return ;
17 if(r*r*h*(m-c+1)<v)return;
18 if(s+r*2*h+ss[c+1]>=ans)return ;
19
20 for(int i=r-1;i>=m-c;--i)
21 for(int j=h-1;j>=m-c;--j)
22 dfs(c+1,i,j,v-r*r*h,s+2*r*h);
23 }
24 int main()
25 {
26 scanf("%d%d",&n,&m);
27 int nn=sqrt(n);
28 for(int i=m;i>=1;--i)
29 {
30 int ii=m-i+1;
31 vv[i]=vv[i+1]+ii*ii*ii;
32 ss[i]=ss[i+1]+2*ii*ii;
33 }
34 for(int i=nn;i>=m;--i)
35 for(int j=n/(m*m);j>=m;--j)
36 dfs(1,i,j,n,i*i);
37 if(ans==0x7fffffff)ans=0;
38 printf("%d",ans);
39 return 0;
40 }

LOJ10019生日蛋糕的更多相关文章

  1. POJ1190生日蛋糕[DFS 剪枝]

    生日蛋糕 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18236   Accepted: 6497 Description ...

  2. 生日蛋糕—dfs

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

  3. poj1190 生日蛋糕(深搜+剪枝)

    题目链接:poj1190 生日蛋糕 解题思路: 深搜,枚举:每一层可能的高度和半径 确定搜索范围:底层蛋糕的最大可能半径和最大可能高度 搜索顺序:从底层往上搭蛋糕,在同一层尝试时,半径和高度都是从大到 ...

  4. 生日蛋糕 (codevs 1710) 题解

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

  5. poj1190生日蛋糕

    生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12277 Accepted: 4325 Description 7月1 ...

  6. 洛谷 P1731 生日蛋糕

    /*洛谷 1731 生日蛋糕 傻傻的-1 T成了傻逼*/ #include<cstdio> #include<iostream> #include<cmath> # ...

  7. NOI题库192 生日蛋糕

    192:生日蛋糕 总时间限制: 5000ms 内存限制: 65536kB 描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i ...

  8. poj1190 生日蛋糕 dfs

    题意:生日蛋糕有m层,总体积是V.从下向上,每一层的半径r和高度h都是递减的. 给m.v,求最小的表面积s.(不算底面接地的面积) 题目链接:poj1190 剪枝都还没加..样例输出都是错的...还没 ...

  9. POJ 1190 生日蛋糕(DFS)

    生日蛋糕 Time Limit: 1000MSMemory Limit: 10000KB64bit IO Format: %I64d & %I64u Submit Status Descrip ...

随机推荐

  1. Python将GIF图片转换成png图片帧

    效果图: 转换之后保存到文件夹中: 代码如下:(第三方库pillow,安装方法:在cmd中输入:  pip install pillow) from PIL import Image import o ...

  2. Hadoop支持的压缩格式对比和应用场景以及Hadoop native库

    对于文件的存储.传输.磁盘IO读取等操作在使用Hadoop生态圈的存储系统时是非常常见的,而文件的大小等直接影响了这些操作的速度以及对磁盘空间的消耗. 此时,一种常用的方式就是对文件进行压缩.但文件被 ...

  3. java面向对象的一些知识

    (1)this和super关键字的用法 this表示调用本类实例方法和成员变量,this引用就是对一个对象的引用,如this.name  表示本类成员变量name,静态方法中不能使用this关键字. ...

  4. Java中几种常见的循环

    多重if_else: package com.dengchaoqun.ht; public class Double_For02 { /** * * 打印乘法表 */ public static vo ...

  5. TextView上下滚动

    public class AutoTextView extends TextSwitcher implements ViewFactory { private float mHeight; priva ...

  6. 二、集群配置SSH免密登录

    一.以3个几点为例,分别为master.slave01.slave02 1.分别生成自己节点密钥对 master: 创建dsa免密代码:ssh-keygen -t dsa -P '' -f ~/.ss ...

  7. JavaScript高级程序设计(第4版)知识点总结

    介绍 JavaScript高级程序设计 第四版,在第三版的基础上添加了ES6相关的内容.如let.const关键字,Fetch API.工作者线程.模块.Promise 等.适合具有一定编程经验的 W ...

  8. 初识sa-token,一行代码搞定登录授权!

    前言 在java的世界里,有很多优秀的权限认证框架,如Apache Shiro.Spring Security 等等.这些框架背景强大,历史悠久,其生态也比较齐全. 但同时这些框架也并非十分完美,在前 ...

  9. Loadrunner与kylinPET的能力对比测试--web动态请求

    概述 在<性能测试工具选择策略--仿真度对比测评分析报告>一文详细分析了使用相同的web页面,分别使用LoadRunner,Jmeter,kylinTOP工具进行录制脚本并执行得出在静态请 ...

  10. 单元测试:单元测试中的mock

    公司要求提升单元测试的质量,提高代码的分支覆盖率和行覆盖率,安排我研究单元测试,指定方案分享并在开发部普及开.整理完资料后,同步一下到博客. 单元测试中的mock的目的 mock的主要目的是让单元测试 ...