hdu_2289 cup

来源:互联网 发布:java贪吃蛇小游戏 编辑:程序博客网 时间:2024/05/15 06:56

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289

分析:

         题目分析:给你一个倒置的圆台(上圆半径R>=下圆半径r,给你一定体积的水,问将水倒入圆台后,水的高度。

如下图

                

如右图设装得水高为h1,则此时上圆半径

r1= r +  r2 

在三角形ABC中由三角形相似得

所以r1=r+                                                  

由圆台的体积公式可得:

V=

接着二分h可得解:

我的代码:

#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;int main(){    int t;    scanf("%d",&t);    const double pi=4.0*atan(1.0);    while(t--)    {        double r,R,h,v;        double ansh;        scanf("%lf%lf%lf%lf",&r,&R,&h,&v);            double lh=0;            double rh=h;            while(lh<=rh)            {                if(rh-lh<1e-7) break;                double mid=(lh+rh)/2.0;                double nr=(R-r)*mid/h+r;                double nv=pi*(r*r+r*nr+nr*nr)*mid/3.0;                if(nv<v)                {                    lh=mid;                }                else                {                     rh=mid;                }           }            ansh=rh;        printf("%.6lf\n",ansh);    }    return 0;}

总结:练习的时候,些不出来TAT.. 

原创粉丝点击