Description

有一天TMK在做一个飞艇环游世界,突然他发现有一个气球匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去射气球,为了提高射击的准确性,他首先在飞艇上找到一个离气球最近的一个点,然后射击(即使气球在飞船的正上方),现在求某些时刻飞艇上的点和气球的距离最小是多少(这个最小距离我们简称为飞艇到气球的距离)。

Input

第一行一个整数T(T<=20),表示有T组测试数据

每组测试数据,有两行。

第一行有5个整数,h,x1,y1,x2,y2,其中h表示飞船的高度,飞船可抽象为一个线段,(x1,y1)(x2,y2)分别是这个线段的端点(有可能会有(x1,y1)(x2,y2)重合的情况)

第二行有6个整数,x,y,z,X,Y,Z分别表示气球的在第0秒的时候的横坐标,纵坐标,高度,一秒时间气球横坐标的变化量,一秒时间气球纵坐标的变化量,一秒时间气球高度的变化量(如果现在气球在(x0,y0,z0)下一秒坐标就为(x0+X,y0+Y,z0+Z))

第三行1个整数n,表示询问组数

接下来的n行,每行一个整数,表示询问的秒数t

题目涉及的整数除了T以外,范围均为[0,1000]

Output

每组询问输出n行,每行输出一个数,表示在t秒的时候飞艇与气球的距离最小是多少,保留两位小数

Sample Input

11 1 1 2 20 0 0 4 4 4 203

Sample Output

1.7317.92

分析:

首先了解一下这道题的思路吧,我没问你要解决的就是求三维空间中的一点到一条直线的距离,我们为你假设空间直线为:Ax+By+Cz+D=0,空间点的坐标为(x1,y1,z1),那么点到直线的距离公式就是abs( Ax1+By1+Cz1+D)/sqrt(AA+BB+CC));

但是我们也知道这条空间直线是平行于x-0-y平面的,我们可以根据映射吧这条直线和点都映射到x-o-y平面里,求出在二维空间中的点线距离,与点线在三位空间中的z轴上的差距构成直角三角形,其斜边几位所求。

还需要注意道德一点就是,我们上面所说的都是点到直线的最短距离可以根据距离公式来求出,但是飞船的位置是抽象为一条线段,如果这个点在直线的正上方的话,这个距离无疑是最短的,但是如果没有在正上方,就要取点到线段两个端点距离中的较小值。

现在我们就要判断这个点到底有没有在这条线段的正上方,应用到三角形求余弦值的公式,如果求得的余弦值为负,该角就是一个钝角,肯定没有在正上方。

上面都是说线段的斜率存在的情况,也有可能线段的斜率压根不存在,这样的话也是要考虑点在不在线正上方,在的话就是横坐标的差值,不再的话还是点到线段两个端点距离的较小值。

代码:

    #include<bits/stdc++.h>using namespace std;int main(){int n;double h1,x1,y1,x2,y2;  ///飞船double x3,y3,z3,X,Y,Z;///气球int m,t;                 ///询问次数,每次的时间scanf("%d",&n);while(n--){scanf("%lf%lf%lf%lf%lf",&h1,&x1,&y1,&x2,&y2);///飞船的相关信息scanf("%lf%lf%lf%lf%lf%lf",&x3,&y3,&z3,&X,&Y,&Z);///气球的相关信息double c;c=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));///抽象为飞船的两个端点间的距离,即飞船的长度scanf("%d",&m);while(m--){scanf("%d",&t);int x=x3+X*t;            ///气球t秒的坐标int y=y3+Y*t;int z=z3+Z*t;double b,a;double s;double k,C;b=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));///气球的当前位置与飞船的左端点之间的距离a=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));///起球的当前位置与飞船的右端点之间的距离if(x2==x1)///即飞船这条线段斜率不存在的时候{if(y>=y1&&y<=y2)///如果当前气球的位置在这条直线的上方s=x-x1;///距离就是横坐标的差值elses=min(a,b);//printf("%lf\n",s);}else{k=(y2-y1)/(x2-x1);///飞船所在的直线的斜率C=y1-k*x1;///飞船所在的直线的截距double d=abs((k*x-y+C)/sqrt(k*k+1));///根据点到直线的距离公式,求得当前气球到直线的垂距if(a*a+c*c<b*b||c*c+b*b<a*a)///应用三角形的余弦公式,得到这样的话相当于气球与飞船构成一个钝角三角形s=min(a,b);elses=d;}printf("%.2lf\n",sqrt(s*s+(z-h1)*(z-h1)));}}}

转载于:https://www.cnblogs.com/cmmdc/p/6729581.html

郑轻校赛 2127 tmk射气球 (数学)相关推荐

  1. 【zzulioj 2127 tmk射气球】+ 空间点到线段距离

    2127: tmk射气球 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 537 Solved: 97 SubmitStatusWeb Board Des ...

  2. 2019xupt-acm校赛 题解 ( F.猜球球 ) by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi'an University of Posts & Telecommunications School Contest 前面的话 有幸参与2019X ...

  3. tmk射气球(郑州轻工业学院第九届ACM程序设计大赛)

    题目描述 有一天TMK在做一个飞艇环游世界,突然他发现有一个气球沿匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去射气球,为了提高射击的准确性,他首先在飞艇上找到一个离气球最近的一个点,然后 ...

  4. 【郑轻邀请赛 A】tmk射气球

    [题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2127 [题意] [题解] 把气球和飞艇所代表的直线投影到xoy面上 设气球所在位置为 ...

  5. 记第一次(失败的)数学建模校赛,脚踏实地

    记录第一次(失败的)数学建模校赛,脚踏实地.现在数学建模还没结束,但我已经可以开始总结自己的失败的教训了,具体的过程不想讲了,失败的教训有:首先,选题不利,在选择自己的题目上,过于快速,只是粗浅地看了 ...

  6. 郑轻第六届校赛 -- 部分题解

    1427: 数字转换 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 379  Solved: 93 SubmitStatusWeb Board Des ...

  7. 郑轻校园网工具1.0正式版本首发

    2019独角兽企业重金招聘Python工程师标准>>> 郑轻校园网工具beta1.0版本首发,郑州轻工业学院专用,破解客户端,发射wifi,网络连接检测,傻瓜化一体工具. 下载地址h ...

  8. “诚迈杯”南邮校赛邀请赛

    昨天早上与三位队友一起参加了南邮的第三届校赛暨"诚迈杯"邀请赛,这是我大学里第一次参加现场个人赛.激动呐~ 参赛前一晚正好与欧冠相冲突,我一直纠结到底要不要去看欧冠.最后果断还是去 ...

  9. [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解

    8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ  1112 I Love Apple Description So many people love app ...

最新文章

  1. python自学书籍推荐豆瓣-入门python有什么好的书籍推荐?
  2. JavaScript: 代码简洁之道
  3. Windows高级编程学习笔记(二)
  4. 彻底理解position与anchorPoint - Wonderffee's Blog(转)
  5. C#语言-04.OOP基础
  6. python+webdriver(二)
  7. AQS的前菜—详解CLH队列锁
  8. 「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)
  9. win10关闭windows聚焦_Windows 10聚焦怎么用?教你玩转Windows聚焦功能
  10. K均值聚类算法(HCM,K-Means)
  11. 学计算机进富士康,大学生进富士康上班工资多高,有发展前景吗?看看前辈们怎么说...
  12. 英语题目作业(10)
  13. 统计_偏态、峰值(Datawhale概率统计温习2)
  14. Linux基础学习——用户权限管理
  15. 中国境外三个不为人知的汉人政权
  16. OTA 电控信息安全
  17. Python实现最小二乘法拟合直线(求斜率截距)
  18. 句子反转(“hello xiao mi”- “mi xiao hello”)
  19. ABB机器人通过安装管理器重做系统
  20. 读书笔记:《产业阴谋链》

热门文章

  1. 模拟电子技术基础-场效应管
  2. 国科大学习资料–模式识别--第二次作业
  3. 不用鼠标换了日语输入法
  4. 每日学术速递2.24
  5. 图像显著性论文(1-3)
  6. 基于nodejs+vue+elementUI的电影交流网站(前后端分离)电影网站
  7. 简单易懂的“测试计划”模板
  8. linux使用docker制作PHP镜像及扩展Dockerfile
  9. 怎么把音乐文件转成mp3格式?这4个方法帮你轻松搞定
  10. ipad wifi信号测试软件,真香!平板Ipad无线投屏在电视上视频教程分享,无需装软件,支持任何显示设备...