题意:

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

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

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  ;
}

转载于:https://www.cnblogs.com/xiaolongchase/archive/2011/08/25/2152841.html

HDU 2289(二分法 圆台体积)相关推荐

  1. HDU 2289 几何+圆台

    题意;给定一个圆台杯子的R,r,H和里面水的体积V 求h 二分................. 因为解不出来h............ View Code 1 /* 2 几何 3 圆台体积 4 V= ...

  2. OJ实验5-8 使用函数求圆台体积OJ

    本题要求实现函数求圆台体积,定义并调用函数volume_tc(r_lower, r_upper, h)计算下底半径为r_lower.上底半径为r_upper.高度为h的圆台的体积,函数类型是doubl ...

  3. 实验5-8 使用函数求圆台体积 (10 分)

    实验5-8 使用函数求圆台体积 (10 分) 本题要求实现函数求圆台体积,定义并调用函数volume_tc(r_lower, r_upper, h)计算下底半径为r_lower.上底半径为r_uppe ...

  4. HDU 2289 Cup(二分+圆台体积)

    Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...

  5. Hdu 3255 Farming(长方形体积并)

    传送门:Hdu 3255 Farming 题意:有N块农田,每块农田中种一种作物,每种作物都有一个价格,当在同一区域内种植了两种不同的作物时,作物价格大的生存下来,作物价格小的死亡.求最后的所有作物的 ...

  6. HDU2289_Cup_二分求圆台体积

    题目大意:          一个圆台型的杯子,告诉你杯子的水的体积,要求水的高度. 解题思路:         将水的高度作为x,然后化简出f(x)方程,二分求x,至于圆台的体积公式:v = pi ...

  7. HDU 2289 Cup

    题解:如果知道水面的高度,则直接可以算出水的体积,我们知道水的高度必然在0到最大高度之间,于是在这个区间内进行二分检索即可: #include <cstdio> #include < ...

  8. HDU 2002 计算球体积

    计算球体积 Problem Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每 ...

  9. 用C语言编程函数求圆台体积,第六篇 AutoCAD二次开发技术.pdf

    第六章 ObjectARX 开发技术 1. AutoCAD二次开发概述 7. MFC对话框 2. ObjectARX简介 8. 搜索图形数据库及获取实体 3. 常用实体类和几何类 数据 4. 创建实体 ...

最新文章

  1. 关于spring aop Advisor排序问题
  2. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
  3. table1函数----一维查表
  4. servlet指定时间到现在过了多久_就喝一瓶啤酒,多久能开车?交警:过了这个时间,100%没问题...
  5. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 二分
  6. Python3爬虫知识点总结
  7. 【内有网易黑猪肉券福利】网易MCTalk首秀——在线教育是一场马拉松
  8. FastDFS分布式文件系统工作原理
  9. Filezilla 服务器发回了不可路由的地址。使用服务器地址代替
  10. 转载:如果你到了20岁,还没到 25岁 作者:李开复
  11. 38个免费匿名临时邮箱服务
  12. Gradle教程--基础篇
  13. 五子棋AI第二篇 AB剪枝和启发搜索(Java)
  14. 玩转windbg软件调试视频教程发布-windbg入门教程
  15. STM32F407VG晶振与主频配置
  16. 12.14黄金白银实时行情分析,黄金原油解套操作策略
  17. 【单片机笔记】基于STM32的8通道的开源无线遥控器手柄
  18. 1031 查验身份证 PTA
  19. 白鹭小游戏-成语挑战-资源放置
  20. mysql如何收费,mysql收费吗

热门文章

  1. SpringBoot 执行测试类取消控台台日志输出,配置只显示测试记录
  2. oracle 回退到某个时间,oracle 闪回技术
  3. STLink V2烧录SWIM和SWD接口接线图
  4. 728-MySQL索引篇
  5. 什么是技术合伙人-为什么需要技术合伙人
  6. 圣火中原之历史回顾, 曾经的“吉鸿昌”
  7. 【软件周刊第 23 期】Win10 开发全家桶已集齐:.NET Framework 4.7 和 VS 2017 Update 发布...
  8. scrapy框架爬取建设行业数据实例(思路整理)
  9. mysql索引工作原理btree_MySQL:索引工作原理
  10. Linux学习笔记-Vim编辑器与Shell命令脚本