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 ;
    }
  • 相关阅读:
    解决php网页运行超时问题:Maximum execution time of 30 seconds exceeded
    C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例
    C#操作Xml:XPath语法 在C#中使用XPath示例
    C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
    C#操作Xml:如何定义Xsd文件
    C#操作Xml:linq to xml操作XML
    C#操作Xml:使用XmlWriter写Xml
    C#操作Xml:使用XmlReader读Xml
    C#操作Xml:通过XmlDocument读写Xml文档
    XML的序列化和反序列化 详细介绍
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2152841.html
Copyright © 2011-2022 走看看