zoukankan      html  css  js  c++  java
  • LOJ10019生日蛋糕

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

    birthdaycake.png

    输入格式

    第一行为 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 }
    View Code
  • 相关阅读:
    手机端阻止页面滑动-模板
    window.location各个属性-笔记
    面向对象的编程思想
    异步执行原理
    移动端rem布局实现(vw)
    用css3实现摩天轮旋转的动画效果
    js如何从一个数组中随机取出n个不同且不重复的值
    js数组中如何去除重复值?
    各大主流流浪器的内核是什么?
    javascript数组常用方法
  • 原文地址:https://www.cnblogs.com/gryzy/p/14031199.html
Copyright © 2011-2022 走看看