HDU
来源:互联网 发布:数据有效性wps2016 编辑:程序博客网 时间:2024/06/11 22:03
题目链接:https://vjudge.net/problem/HDU-1174
解题思路:从警察的角度看土匪,由于土匪的头是个球,无论从哪个角度看都是一个圆,那么可以通过tan求出最大的夹角,然后再算枪的方向 和 警察的头心与土匪头心的向量 所形成的角度,判断是否在最大夹角内即可
AC代码:
#include<cstdio>#include<cmath>using namespace std;struct Pos{ double _x, _y, _z; Pos(double x=0.0, double y=0.0, double z=0.0) :_x(x), _y(y), _z(z) {} Pos operator-(const Pos& a)const { return Pos(_x - a._x, _y - a._y, _z - a._z); } double length() { return sqrt(_x*_x + _y*_y + _z*_z); }};double angle(const Pos&a, const Pos&b){ double tmp = (a._x*b._x + a._y*b._y + a._z*b._z); tmp /= sqrt(a._x*a._x + a._y*a._y + a._z*a._z); tmp /= sqrt(b._x*b._x + b._y*b._y + b._z*b._z); return acos(tmp);}int main(){ int t;scanf("%d", &t); while (t--) { double h1, r1, x1, y1, z1; double h2, r2, x2, y2, z2, x3, y3, z3; scanf("%lf%lf%lf%lf%lf", &h1, &r1, &x1, &y1, &z1); scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &h2, &r2, &x2, &y2, &z2, &x3, &y3, &z3); Pos police = Pos(x2, y2, z2 + h2*0.9 - r2); Pos bandit = Pos(x1, y1, z1 + h1 - r1); Pos vec1 = bandit - police; if (angle(Pos(x3, y3, z3), vec1) <= atan(r1/vec1.length())) puts("YES"); else puts("NO"); } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 阻止点击事件冒泡,不让父级元素的点击事件响应
- 【Codeforces418D】Big Problems for Organizers
- LeetCode 68 Text Justification
- 获取电脑日期时间代码段
- Windows 无法启动 VMware Authorization Service 服务
- HDU
- 面试准备之最详细的Handler的使用、源码分析
- JavaScript 原型
- javascript正则表达式
- Unity shader学习之屏幕后期处理效果之Bloom效果
- ELK技术实战-安装Elk 5.x平台
- 设置启动进程
- 开启User流程
- linux命令