【dfs】p1731 生日蛋糕

时间:2022-05-04 03:47:26

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外,以上所有数据皆为正整数)

【dfs】p1731 生日蛋糕

【输入】

有两行,第一行为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!

【dfs】p1731 生日蛋糕

那么该怎么剪枝呢?

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 生日蛋糕

【dfs】p1731 生日蛋糕的更多相关文章

  1. 洛谷P1731生日蛋糕&lpar;dfs&plus;剪枝&rpar;

    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. &lbrack;洛谷P1731&rsqb;&lbrack;NOI1999&rsqb;生日蛋糕&lpar;dfs&rpar;&lpar;剪枝&rpar;

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

  6. 洛谷 P1731 &lbrack;NOI1999&rsqb;生日蛋糕

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

  7. 洛谷——P1731 &lbrack;NOI1999&rsqb;生日蛋糕

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

  8. C&plus;&plus; 洛谷 P1731 &lbrack;NOI1999&rsqb;生日蛋糕

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

  9. POJ1190生日蛋糕&lbrack;DFS 剪枝&rsqb;

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

随机推荐

  1. 【ASP&period;net】Equals 和 &equals;&equals; 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...

  2. 四则运算2--c&plus;&plus;

    1.设计思路: 上篇已写,不在解释..... 2.源代码: #include<iostream.h>#include<stdlib.h>#include "time. ...

  3. Apache Tiles 2&period;x 应用指南(转)

    转自:http://jaymsimusic.iteye.com/blog/1138906 Apache Tiles 2.x 应用指南 博客分类: Apache Tiles   Jakarta Tile ...

  4. Today See&gt&semi;

    http://wenku.baidu.com/view/b08f3575f46527d3240ce061.html http://wenku.baidu.com/view/a3419558be2348 ...

  5. express4&period;0之后不会解析req&period;files&comma;必须加一个插件multer

    express 4 + 用multer express4.0之后不会解析req.files,必须加一个插件multer http://www.w3school.com.cn/tags/att_form ...

  6. API WAVE 专栏

    关于音频输入.输出设备的使用 源:API WAVE 专栏

  7. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  8. 【不定期更新】FPGA&sol;IC岗位常见笔试面试题总结(基础知识)

    1 数字IC(ASIC)设计流程: IC设计分为前端和后端.前端设计主要将HDL语言-->网表,后端设计是网表-->芯片版图. 前端主要有需求分析与架构设计.RTL设计.仿真验证.逻辑综合 ...

  9. Element-ui 中dialog的使用方法

    <template> <div> <el-button type="text" @click="dialogFormVisible = tr ...

  10. Edit Distance II

    Given two strings S and T, determine if they are both one edit distance apart. Example Given s = &qu ...