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. stark组件之展示数据(查)

      1.编辑按钮构建完成 2.构造表头,删除,checkbox,links编辑 3.代码+总结   1.编辑按钮构建完成 1.必备知识预习 第一个会打印5. 第二个输出alex alex是person ...

  2. 关于PHP的那些坑

    因为PHP是弱类型语言,常常会发生许多意想不到的问题,所以,我们再次一一细数这些我们踏过的坑!!! 1) foreach中自动回将key为数值的转化成整型,造成无法匹配 function transl ...

  3. Linux基础命令和NAT技术

    yum    yellowdog updater,modified是一种用python写的基于rpm的管理工具 用于解决rpm包的依赖性 要安装编译工具 yum install gcc 库函数:静态库 ...

  4. cpp11_thread线程

    一.进程与线程 cpu一般有m核n线程的说法,那么该cpu只能同时运行n个线程(线程中没有sleep). #include <thread> #include <mutex> ...

  5. hadoop 管理命令dfsadmin

    hadoop 管理命令dfsadmin dfsadmin 命令用于管理HDFS集群,这些命令常用于管理员. 1. (Safemode)安全模式 动作 命令 把集群切换到安全模式 bin/hdfs df ...

  6. 莫烦scikit-learn学习自修第三天【通用训练模型】

    1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ import numpy as np from sklearn import datasets ...

  7. 莫烦keras学习自修第二天【backend配置】

    keras的backend包括tensorflow和theano,tensorflow只能在macos和linux上运行,theano可以在windows,macos及linux上运行 1. 使用配置 ...

  8. freemarker 设置中文

    在web中添加一段代码 <servlet> <servlet-name>freemarker</servlet-name> <servlet-class> ...

  9. MySQL 大数据量分页优化

    假设有一个千万量级的表,取1到10条数据: ,; ,; 这两条语句查询时间应该在毫秒级完成: ,; 你可能没想到,这条语句执行之间在5s左右: 为什么相差这么大? 可能mysql并没有你想的那么智能, ...

  10. Membership 介绍

    ASP.NET成员资格为您提供了验证和存储用户凭据的内置方式.因此,ASP.NET成员可以帮助您管理网站中的用户身份验证.您可以使用ASP.NET表单身份验证使用ASP.NET成员身份,方法是使用AS ...