zoukankan      html  css  js  c++  java
  • HDU 2289 Cup【二分】

    <题目链接>

    题目大意:

    一个圆台型的杯子,它的上底半径和下底半径已经给出,并且给出它的高度,问你,体积为V的水倒入这个杯子中,高度为多少。

    解题分析:

    就是简单的二分答案,二分枚举杯中水的高度,然后根据几何计算出该高度下,水的上半径,然后计算出该高度下水的体积,在与实际水的体积进行比较,从而确定最终的答案。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 
     5 const double PI=acos(-1.0);
     6 const double eps=1e-9;
     7 double R,r,H,v;
     8 
     9 double vol(double h){
    10     double rtop=(H*r+h*(R-r))*1.0/H*1.0;    //利用几何关系计算出高度为h处圆杯的半径
    11     return PI*h*(rtop*rtop+r*r+rtop*r)/3;   //利用公式计算出该高度下水的体积
    12 }
    13 
    14 int main(){
    15     int T;scanf("%d",&T);
    16     while(T--){
    17         scanf("%lf%lf%lf%lf",&r,&R,&H,&v);
    18         double l=0,r=H;
    19         while(r-l>eps){
    20             double mid=(l+r)/2;     //二分答案,枚举水杯中水的高度
    21             if(vol(mid)>v)r=mid;
    22             else l=mid;
    23         }
    24         printf("%.6lf
    ",l);
    25     }
    26     return 0;
    27 }

    2018-11-02

  • 相关阅读:
    01 Vue的起步和插值表达式
    06 扩展的对象的功能
    05 解构赋值
    04 函数之扩展运算符、箭头函数
    03 函数之默认值、剩余参数
    02 模板字符串
    01 let和const命令
    28 Bootstrap排版
    27 Bootstrap的列偏移
    26 Bootstrap的栅格系统
  • 原文地址:https://www.cnblogs.com/00isok/p/9899052.html
Copyright © 2011-2022 走看看