HDU-2289 Cup
2015-07-26 20:47
399 查看
#include <iostream> #include <cstdio> #include <cmath> using namespace std; const double eps = 1e-9; const double pi = acos(-1.0); double r1, r2, H, V; int t; inline double volume(double h) { double R = h / H * (r2 - r1) + r1; double v = (r1*R + r1*r1 + R*R) * h * pi / 3; return v; } int main() { while(cin >> t) { while(t--) { cin >> r1 >> r2 >> H >> V; double l = 0, r = 100; while(r - l > eps) { double mid = (r + l) / 2; double vm = volume(mid); if(vm >= V) r = mid; else l = mid; } printf("%.6f\n",r); } } return 0; }
题意:输入t(杭电输入的一种习惯),之后输入一个水杯(圆台(上大下小))的 下底半径r1,上底半径r2,杯高度H,体积V。求水的高度。
题解:二分查找。现在做起来满简单的。一开始又犯了一个低级数学错误(直接把上底r2当成了水面的高度,想想怎么这么简单..看来是敲太久晕了)。求水面上底的半径R = h / H * (r2 - r1) + r1(相似比)。其他就很简单了。(可以r = mid或者r = mid - eps 都过)
相关文章推荐
- [转]Android 网络通信框架Volley简介(Google IO 2013)
- Solr其他 配置
- MVC---404页面配置
- GCC链接的几个注意点
- UVA 644
- HDU 4054 Hexadecimal View 十六进制
- Scala归并排序解析
- Northcott Game - HDU 1730 Nim
- IE6的3像素bug
- [leedcode 140] Word Break II
- 构造方法
- sift是图像匹配的非常经典的算法
- UI002---自定义控件
- Hidden String
- 【剑指Offer面试题】 九度OJ1512:用两个栈实现队列
- [转]Android Volley完全解析(四),带你从源码的角度理解Volley
- SSL/TLS单向认证实现(JAVA、TOMCAT)
- HTML5简单进度条插件
- 《推荐系统实践》协同过滤算法源代码
- android dex中method及field 65536打包问题