HDU 2289 Cup
生活随笔
收集整理的這篇文章主要介紹了
HDU 2289 Cup
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題解:如果知道水面的高度,則直接可以算出水的體積,我們知道水的高度必然在0到最大高度之間,于是在這個區間內進行二分檢索即可:
#include <cstdio> #include <cmath> #include <algorithm> using namespace std; #define PI 3.1415926535897932384626 #define exp 1e-9 double solve(double r,double R,double h,double H) { double u = h/H*(R-r) + r; return PI/3*(r*r+r*u+u*u)*h; } int main() { int t; double r,R,H,V,mid,vv,f,l; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf",&r,&R,&H,&V); f=0; l=100; while(l-f>exp) { mid=(l+f)/2; vv=solve(r,R,mid,H); if(fabs(vv-V)<=exp) break; else if(vv>V) l=mid-exp; else f=mid+exp; } printf("%.6lf\n",mid); } return 0; }?
fabs函數是對實數進行取絕對值用的。
轉載于:https://www.cnblogs.com/forever97/p/3540972.html
總結
以上是生活随笔為你收集整理的HDU 2289 Cup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: typedef 与 define
- 下一篇: HTTP 返回状态消息讲解