zoukankan      html  css  js  c++  java
  • HDU 2289(二分法 圆台体积)

    题意:

            给定一个圆台的上底半径,下底半径和高,给出一定体积的水,求这些水在圆台内的体积。

            简单的二分法逼近求高,过程中因为忘记了怎么求小圆台的上底半径而超时了几次。

    TLE代码:

    #include<iostream>
    #include
    <cstdio>
    #include
    <math.h>
    using namespace std ;
    double h = 0, h1, r1, r2, r3, r ;
    void f1(){
        h1 
    /= 2 ;
        h 
    += h1 ;
        r3 
    = r ;
        r 
    = (r + r2) / 2 ;
    }
    void f2(){
        h1 
    /= 2 ;
        h 
    -= h1 ;
        r 
    = (r + r3) /2 ;
    }
    int main(){
        
    double v1, v2 ;
        
    int m ;
        
    double const PI = acos(double(-1)) ;
        cin 
    >> m ;
        
    while(m--){
            cin 
    >> r1 >> r2 >> h1 >> v2 ;
            r 
    = r1 ;
            
    while(true){
                v1 
    = PI*(r1*r1+r*r+r1*r)*h/3 ;
                
    if(fabs(v1-v2)<0.00000001){
                    printf(
    "%.6f", h) ;
                    
    break ;
                }
                
    else if(v1<v2)  f1() ;
                
    else f2() ;
            }
        }
        
    return 0 ;
    }

    AC代码:

    #include<iostream>
    #include
    <cstdio>
    #include
    <math.h>
    using namespace std ;
    double h, h1, r1, r2, r, v, v1 ;
    int main(){
        
    int m ;
        
    double const PI = acos(double(-1)) ;
        cin 
    >> m ;
        
    while(m--){
            cin 
    >> r1 >> r >> h1 >> v ;
            
    double L=0, H=h1, M ;
            
    while(H-L>0.0000001){
                M 
    = (L + H) / 2 ;
                r2 
    = M / h1 * (r-r1) + r1 ;   //根据比例关系求小圆台的上底半径
                v1 
    = PI*(r1*r1+r2*r2+r1*r2)*M/3 ;
                
    if(v1>v)    H = M ;
                
    if(v1<v)    L = M ;
            }
            printf(
    "%.6lf\n", M) ;
        }
        
    return 0 ;
    }
  • 相关阅读:
    接口测试基础07
    性能测试基础01
    接口测试基础06
    将java list转换为js的数组
    java 网络编程
    java分页
    单例模式
    适配器模式
    抽象工厂模式
    工厂模式
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2152841.html
Copyright © 2011-2022 走看看