题意:从(0,0)开始,射中目标(x,y),g=9.8N,问射中的最小角度.

思路:因为角度[0,PI/2], cos(a),[0,PI/2]是单调函数,可以二分逼近出一个结果,判断他能否射中,找到能射中的最大高度,然后和y比较,小于y就是射不中,否则就二分逼近结果

x,y表示水平方向,竖直方向的位移.t表示时间.

x = v * cos(a) * t;

y = v * sin(a) * t;

合并方程 y = x*tan(a)-x*x*g/(2*v*v*cos(a)*cos(a));

x,v知道,相当于这是一个关于y,a的非线性方程,首先要找到一个a是的y取最大值,三分得到一个角度b使得y最大, 然后b带入原方程,得到y1,比较y与y1,得到他能否射中

b为取最大值的角度,所以二分逼近范围[0,b]不用到PI/2了

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double PI=acos(-1.0);
const double eps = 1e-9;
const double g = 9.8;
double x,y,v;
double f(double a)
{return x*tan(a)-x*x*g/(2*v*v*cos(a)*cos(a));
}
double sanfen(double a)
{double left = 0,right = a,mid,midmid;while(right - left > eps){mid = (left + right) / 2;midmid = (mid + right) / 2;if(f(mid) > f(midmid)){right = midmid;}else{left = mid;}}return (mid+midmid)/2;
}double erfen(double a)
{double left = 0,right = a,mid;while(right - left > eps){mid = (left + right) / 2;if(f(mid) < y){left = mid;}else{right = mid;}}return mid;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%lf%lf%lf",&x,&y,&v);double sum = sanfen(PI/2);if(f(sum) < y)printf("-1\n");elseprintf("%.6lf\n",erfen(sum));}return 0;
}

Toxophily(hdu2298三分+二分)相关推荐

  1. 1095. 山脉数组中查找目标值(三分+二分)

    (这是一个 交互式问题 ) 给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值. 如果不存在这 ...

  2. HDU 2298 Toxophily 【三分算法 or 直接推导物理公式】

    http://acm.hdu.edu.cn/showproblem.php?pid=2298 题目大意:Bob在(0,0)点想射在(x, y)点的水果,初始的速度为v(已知), g=9.8, 求最小的 ...

  3. 【hdu2298】Toxophily——三分+二分

    题目: Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. CF 8D Two Friends (三分+二分)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...

  5. Gym - 100889H Hitting Points 计算几何+三分+二分

    题目链接 Hitting Points 题意 按逆时针顺序给你二维平面上严格凸包的n个点,编号0到n-1, 有q次询问, 每次询问确定一个编号为idx的基础点, 以idx和(idx+1)%n构成的向量 ...

  6. Codeforces Round #320 (Div. 2) [Bayan Thanks-Round]

    数学 A - Raising Bacteria 分析:如果1 << k == x,那么放1个就可以了:否则还要加上差值的二进制的1的个数. /*********************** ...

  7. 二分法、三分法 --算法竞赛专题解析(1)

    本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 2019.8 网购:京东 当当      作者签名书 如有建议, ...

  8. 力扣OJ(1401-1500)

    目录 1414. 和为 K 的最少斐波那契数字数目 1419. 数青蛙 1420. 生成数组 1424. 对角线遍历 II 1426. 数元素 1427. 字符串的左右移 1428. 至少有一个 1 ...

  9. 2015小米校招【研发类】面试真题经验分享

    1.一个map中存有类似如下的数据:key value"a" "afasfwaeqwfwa(b)eqwgewgrqgq""b" " ...

  10. 22年ICPC西安站记录

    \quad 最后rank119铜. \quad 经过桂林被挨打经历后,西安站赛前佛系了许多,完全没有压力,桂林赛前辗转难眠,昨晚打完游戏后就睡着了2333.十点起床做完核酸后就冲去院楼了. \quad ...

最新文章

  1. 在Spring Framework中@Inject和@Autowired有什么区别? 在什么条件下使用哪一个?
  2. Django的静态文件的配置
  3. 深度解析企业级存储解决方案
  4. Caffe 网络结构可视化
  5. IBatis.Net学习笔记(四)--再谈查询
  6. python中对列表和循环使用的小练习
  7. html overflow 样式,css样式之overflow-x属性样式
  8. C语言之反序数组和求最大值和最小值
  9. assertion: 18 { code: 18, ok: 0.0, errmsg: auth fails }
  10. php增加md5加密的方法_php进行md5加密简单实例方法
  11. uc影音java_uc影,
  12. Python实现电子词典
  13. UltraEdit 26 总是偶尔提示运行的是试用模式
  14. 如何制定人生目标和实现目标
  15. Mac 没有声音怎么恢复
  16. linux如何使用磁盘阵列卡,Ubuntu 上创建常用磁盘阵列
  17. 电磁场与电磁波公式总结
  18. c# MD5加密
  19. 计算机专业可以买台式机吗,现在还有必要买台式电脑吗?
  20. PCIe系列第四讲、TLP的路由方式

热门文章

  1. Intel Mac无法使用macOS Monterey系统部分新功能
  2. iOS底层探索之KVO(四)—自定义KVO
  3. Swift中类型推导(掌握)
  4. 编译器预编译与变量提升
  5. 一招教你轻松恢复丢失的MP4视频
  6. 一首歌是怎么诞生的?
  7. Android内存泄露测试
  8. APP,webapp 设计相关资料汇集区
  9. 累加数据段中的前3个字型数据
  10. 失败后的从容离开,无意之中也许会再次点亮希望之光