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. 配置文件中配置集合类(Map、list)@Value注入map、List

    spel表达式就是spring表达式.在java代码中,还有这种写法: @Value("#{'${auth.filter.exclude-urls}'.split(',')}") ...

  2. msf ms17-010利用笔记

    nmap -sV -Pn xxxxx  扫描端口and系统信息 use auxiliary/scanner/smb/smb_ms17_010   扫描模块 set Rhosts 扫描目标 use ex ...

  3. HTML文本格式化标签

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...

  4. Linux 网络排错检查思路

    Linux 网络排错检查思路 graph TD A[当网络不通时] --> B{ping想要访问的地址,<br>如www.runoob.com} B --> |不通| C{pi ...

  5. VScode中配置C++运行环境

    目录 VScode中配置C++运行环境 1. 哪些插件 2. 配置开始 3. 编写代码并运行 VScode中配置C++运行环境 关于安装mingw的教程,网络上已经有很多了,这里不再赘述,下面就看VS ...

  6. 10年前,我就用 SQL注入漏洞黑了学校网站

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  7. Spring Security OAuth2.0认证授权一:框架搭建和认证测试

    一.OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容. 1.s ...

  8. 聊聊并发,进程通信方式,go协程简单应用场景

    开篇提问 知道并发,并行,线程,协程概念吗?或者知道大概含义吗? 有线程为什么还要有协程?区别是什么? 『进程』通信方式知道几种?有没有超过3种? golang『协程』通信方式推荐? 使用并发的目的是 ...

  9. WDCP v3 安装

    ---已更新至3.0.3---经过近期的努力,wdCP_v3正式版终于可以和大家见面了v3功能预览1 底层完全重新架构,更安全稳定,省资源更高效2 安装更简单,快速与方便3 功能更强大和易扩展,且完美 ...

  10. 线程专题 -- 线程池,ThreadPoolExecutor

    什么是线程池? 为什么要使用它? 线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入"池"中,当有任务来临时就可以重用已有的线程,无需 ...