hdu 2289 要二分的杯子
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289
大意是 一个Cup,圆台形,给你它的顶部圆的半径,底部圆的半径,杯子的高度,和此时里面装的水的体积,求水的高度。
这道题好在能够锻炼算法思维,或者说形成算法思维。
这是一道二分逼近求值的应用
题目已经给定杯子的高度是0~100,故在这个范围内进行二分,但走了涉及到还有小数的问题,故可以取一个精度较高的误差值
来作为二分的条件,二分一次,以这个值作为水的高度求出水的体积与实际值比较一次,当误差不大于误差值时,便取为高。
另圆台体积公式:设上底的半径为r ,下底的半径为R ,高为h则V= (1/3)*pi*h*(R^2 + Rr +r^2) pi为圆周率
#include <stdio.h>
#include <math.h>
double PI=acos(-1.0); //圆周率
double haha = 0.000000001;//取误差值 double yj(double r,double R,double h,double H)
{
double u = h/H*(R-r) + r; //求出水面圆的半径
return PI/*(r*r+r*u+u*u)*h;//返回水圆台的体积
} double ls(double r,double R,double H,double v)
{
double left,right,temp,mid;
left = ,right = ;
while ((right-left)>haha)//二分条件变成了与误差值相比较
{
mid = (left+right)/;
temp= yj(r,R,mid,H);
if (fabs(temp-v)<=haha)
return mid;
else if(temp<v)
left=mid+haha;
else
right = mid-haha;
}
return (right+left)/;
} int main()
{
int t;
double r,R,H,v;
while (~scanf("%d",&t)){
while (t--)
{
scanf("%lf%lf%lf%lf",&r,&R,&H,&v);
printf("%.6lf\n",ls(r,R,H,v));
}
}
return ;
}
hdu 2289 要二分的杯子的更多相关文章
- HDU 2289 CUP 二分
Cup Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2289 Cup【高精度,二分】
Cup Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2289 Cup【二分】
<题目链接> 题目大意: 一个圆台型的杯子,它的上底半径和下底半径已经给出,并且给出它的高度,问你,体积为V的水倒入这个杯子中,高度为多少. 解题分析: 就是简单的二分答案,二分枚举杯中水 ...
- hdu 2289 Cup (二分法)
http://acm.hdu.edu.cn/showproblem.php?pid=2289 二分法解题. 这个题很恶心...一开始测试样例都不能过,这个π一开始取3.1415926结果是99.999 ...
- UVA 10816 + HDU 1839 Dijstra + 二分 (待研究)
UVA 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因 ...
- hdu 2413(最大匹配+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战 ...
- HDU 5884 Sort (二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5884 nn个有序序列的归并排序.每次可以选择不超过kk个序列进行合并,合并代价为这些序列的长度和.总的 ...
- hdu 1281棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘, ...
- HDU 1025 DP + 二分
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1025 求最长递增子序列,O(n^2)的复杂度超时,需要优化为O(n*logn) f[i]存储长度为i的最小 ...
随机推荐
- 吴裕雄 python oracle检索数据(1)
import cx_Oracle conn = cx_Oracle.connect("scott/admin@localhost:1521/ORCL")cursor = conn. ...
- python小数据池概念以及具体范围
= 赋值符号: == 比较值是否相等: is 比较,比较的是内存地址 ID(内容) 数字,字符串的小数据池 小数据池现象产生的原因,作用: 为了节省内存空间. &l ...
- Bad owner or permissions on .ssh/config的解决
出处:http://blog.csdn.net/notzuonotdied/article/details/69668519 在.ssh目录,执行以下命令行: sudo chmod 600 confi ...
- 关于git经常忘记的:远程仓库关联。
我们有时习惯建立好工程后再传到git上,这是时候就忘记咋弄啦, 其实,只要配置远程仓库就行: git remote add +url...具体看网上哦,这里提醒下 Git clone远程分支 Git ...
- php数组按值的大小排序
array_multisort(array_column($nima,'zongfen'),SORT_DESC,$nima);
- “2017面向对象程序设计(Java)第就九周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第就九周学习总结”存在问题的反馈 1.博文未写者:高树平 高俊梅 冯小丽 缪召召 王瑞强 宗鹏新 李向龙 马润韬 米奇辉 卯保云——不及时提交博客的同学人数出 ...
- cakePHP的ajax弹出窗
在html里添加一个触发弹出框的按钮 $("#button1").on("click", function() { $("#dialogue" ...
- centos最小安装之后无法使用ifconfig
Centos7安装之后,无法使用ifconfig(找不到命令) 运行 yum install provides 再安装net-tools即可 yum install net-tools 没有网,下载r ...
- msf客户端渗透(五):注册表
先获取到一个session 上传nc到被攻击主机上 建立一个键值 创建一个策略 kali上查看是否成功创建键值 后台开启cmd 查看防火墙的策略 打开防火墙的端口 添加一条防火墙策略 在win7上查看 ...
- J_link重刷固件
第一步:上电短接ERS 第二步:上电短接TST (擦除原来的固件) 完成上面两步后,再连接电脑,电脑将出现正常的串口连接 第三步:(烧固件) 在SAM-BA xxx固件烧写选好芯片类型,连接 ...