POJ 3737 UmBasketella 三分法 入门题
2013-08-29 10:33
381 查看
二分法:适用于单调函数,单调增或单调减
三分法:适用于单峰凸性函数,如二次函数
缩写 l:left ,r: right , m1:mid 1,m2:mid2
三分法模板:
#define eps 10e-6 double cal(){}//计算题目所需要的值 while(l+eps<r) { m1=l+(r-l)/3; m2=r-(r-l)/3; v1=cal(m1); v2=cal(m2); if(v1<v2)l=m1; else r=m2; }
AC代码:
View Code
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #define eps 10e-6 using namespace std; const double pi = acos(double(-1)); double S; double cal(double r) { double R = S/pi/r-r; double h = sqrt(R*R-r*r); return h*pi*r*r/3; } int main() { while(~scanf("%lf",&S)) { double l= 0,r= sqrt(S/pi); double m1,m2,v1,v2; while(l+eps<r) { m1=l+(r-l)/3; m2=r-(r-l)/3; v1=cal(m1); v2=cal(m2); if(v1<v2)l=m1; else r=m2; } double R = S/pi/r-r; double h = sqrt(R*R-r*r); double V = h*pi*r*r/3; printf("%.2f\n%.2f\n%.2f\n",V,h,r); } }
相关文章推荐
- POJ 3737 UmBasketella 三分法 入门题
- poj 3737 UmBasketella 三分
- POJ 3737 UmBasketella
- poj 3737 UmBasketella(三分)
- POJ 3737 UmBasketella(三分模板)
- POJ 3737 UmBasketella(三分)
- poj 3737 UmBasketella(三分+求导)
- day5 POJ 3737 UmBasketella
- POJ 3737 UmBasketella (数学)
- POJ 3737 UmBasketella(三分)
- POJ 3737 UmBasketella
- [POJ 3737]UmBasketella(三分)
- POJ 3737 UmBasketella 三分搜索
- (POJ - 3737)UmBasketella
- POJ 3737 UmBasketella(三分)
- poj 3737 UmBasketella(数学推导||三分)
- poj 3737 UmBasketella (三分)
- POJ 3737 UmBasketella
- [POJ 3737][三分]UmBasketella
- poj 3737 UmBasketella