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 生日蛋糕的更多相关文章

  1. 洛谷P1731生日蛋糕(dfs+剪枝)

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

  2. 洛谷 P1731 生日蛋糕

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

  3. 洛谷P1731 生日蛋糕

    李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int ...

  4. P1731 生日蛋糕

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

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

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

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

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

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

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

  8. C++ 洛谷 P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 一本通上也有. 这TM是一道极其简单的深搜剪枝(DP当然可以的了,这里我只讲深搜). 首先圆柱公式:(有点数学基础都知道) V=πR2H S侧=π2RH S底= ...

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

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

随机推荐

  1. HDU 2003 求绝对值

    http://acm.hdu.edu.cn/showproblem.php?pid=2003 Problem Description 求实数的绝对值.   Input 输入数据有多组,每组占一行,每行 ...

  2. python生成个性二维码学习笔记

    在linux环境下进行编码 1.先进家目录,自行创建Code文件夹 cd Code 2.下载MyQR库 sudo pip3 install MyQR 3.下载所需资源文件并解压 Code/ $ wge ...

  3. array_filter与array_map

    php数组array_filter函数和array_slice函数:<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,functio ...

  4. [转帖]Docker四种网络模式

    Docker(十四)-Docker四种网络模式 https://www.cnblogs.com/zhuochong/p/10069293.html 计算机网络相关的知识 非常有用.. Docker 安 ...

  5. Collections斗地主案例

    package com.zhangxueliang.doudizhu; import java.util.ArrayList; import java.util.Collections; public ...

  6. Angular 基本指令

    <!DOCTYPE html><html ng-app><head lang="en"> <meta charset="UTF- ...

  7. PS中如何把图片颜色加到字体上去

    1.在PS中的图层中,将图片置于文字层的上方,同时按ctrl+alt+g键,这样就将文字范围以外的图像给剪切掉了.见附图下方的效果. 2.最终效果如下图: 参见:https://zhidao.baid ...

  8. ECS配置lamp环境

    1.安装apache 1.1 安装apache [root@nmserver-7 ~]# yum install httpd httpd-devel 1.2 启动apache服务 [root@nmse ...

  9. idea -> Error during artifact deployment. See server log for details.

    用idea导入eclipse工程,运行时,报Error during artifact deployment. See server log for details. 谷歌,最后发现是最新  tomc ...

  10. python 计算机基础

    1.什么是编程语言. 语言是一个事物与另一个事物沟通的介质. 编程语言是程序员与计算机沟通的介质. 2.什么是编程. 编程是人按照某种语法规范设计出计算机能够识别的语言 表达的结果是程序,程序就是一系 ...