zoukankan      html  css  js  c++  java
  • POJ3737 UmBasketella

    gate

    用时:20min(看题解了)

    题目大意:
    给定圆锥的表面积(S),求这个圆锥的最大体积(V),以及此时它的高(h)与底面半径(r)

    (S = pi rl+pi r^2)
    (h = sqrt{l^2-r^2})
    (V = dfrac{1}{3}pi r^2 h)
    (V = dfrac{1}{3}sqrt{S^2 r^2-2pi Sr^4})

    (V)是关于(r)的一个单峰函数,三分(r)求解即可。

    注意:
    (pi = acos(-1.0))
    因为(cos(pi) = -1),所以(arccos(-1) = pi)
    注意这里要写(-1.0),否则会(CE)

    (code)

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #define MogeKo qwq
    using namespace std;
    
    const double Pi = acos(-1.0);
    const double eps = 1e-6;
    
    double S,L,R,l,h,V;
    
    double calc(double r){
        l = (S/Pi - r*r) / r;
        h = sqrt(l*l - r*r);
        V = Pi * r*r * h / 3.0;
        return V;
    }
    
    int main(){
        while(~scanf("%lf",&S)){
            L = 0,R = S;
            while(R-L >= eps){
                double d = (R-L)/3.0;
                double m1 = L+d;
                double m2 = R-d;
                if(calc(m1) < calc(m2)) L = m1;
                else R = m2;
            }   
            printf("%.2lf
    %.2lf
    %.2lf
    ",calc(L),h,L);
        }
        return 0;
    }
    
  • 相关阅读:
    terminal下历史命令自动完成功能history auto complete
    Shell中while循环的done 后接一个重定向<
    python 链接hive
    shell 学习基地
    c++ 获取本地ip地址
    c++ 如何实现,readonly
    c++ 语法
    c++ 信号量
    vim插件介绍
    c++ memset 函数 及 坑
  • 原文地址:https://www.cnblogs.com/mogeko/p/13273880.html
Copyright © 2011-2022 走看看