HDU 2289 Cup二分

Posted 00isok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于HDU 2289 Cup二分的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2289 Cup高精度,二分

HDU 2289 Cup二分

HDU 2289 Cup

Hdoj 2289.Cup 题解

POJ2289:Jamie's Contact Groups(二分+二分图多重匹配)

POJ2289 Jamie's Contact Groups —— 二分图多重匹配/最大流 + 二分