tmk射气球
问题 : tmk射气球
时间限制: 1 Sec 内存限制: 128 MB
题目描述
有一天TMK在做一个飞艇环游世界,突然他发现有一个气球沿匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去射气球,为了提高射击的准确性,他首先在飞艇上找到一个离气球最近的一个点,然后射击(即使气球在飞船的正上方),现在求某些时刻飞艇上的点和气球的距离最小是多少(这个最小距离我们简称为飞艇到气球的距离)。
输入
第一行一个整数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]
输出
每组询问输出n行,每行输出一个数,表示在t秒的时候飞艇与气球的距离最小是多少,保留两位小数
样例输入
1 1 1 1 2 2 0 0 0 4 4 4 2 0 3
样例输出
1.73 17.92
#include <stdio.h>
#include <math.h>
int main()
{
double h, x1, y1, x2, y2, x, y, z, vx, vy, vz, x0, y0, z0, la, lb, l, p;
int T, t, n;
while (~scanf("%d", &T))
{
while (T--)
{
scanf("%lf%lf%lf%lf%lf", &h, &x1, &y1, &x2, &y2);
scanf("%lf%lf%lf%lf%lf%lf", &x0, &y0, &z0, &vx, &vy, &vz);
scanf("%d", &n);
while (n--)
{
scanf("%d", &t);
x = x0 + vx * t;
y = y0 + vy * t;
z = z0 + vz * t;
la = sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1) + (z - h) * (z - h));
lb = sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2) + (z - h) * (z - h));
l = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
if (l == 0)
{
printf("%.2f\n", la);
continue;
}
if (la + lb == l)
{
printf("0.00\n");
continue;
}
if (la + l == lb)
{
printf("%.2f\n", la);
continue;
}
if (lb + l == la)
{
printf("%.2f\n", lb);
continue;
}
if (l * l + lb * lb < la * la || l * l + la * la < lb * lb)
{
printf("%.2f\n", la < lb ? la : lb);
continue;
}
p = (la + lb + l) / 2;
printf("***%.2f\n", (2 * sqrt(p * (p - la) * (p - lb) * (p - l))) / l);
}
}
}
return 0;
}tmk射气球的更多相关文章
- 【zzulioj 2127】 tmk射气球
比较简单的题,直接求空间中一个点到直线的距离而已,这道题说了直线和水平的平面 平行,我们可以先求投影到直线的距离,然后再算当前点到直线的距离. Description 有一天TMK在做一个飞艇环游世界 ...
- 【郑轻邀请赛 A】tmk射气球
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2127 [题意] [题解] 把气球和飞艇所代表的直线投影到xoy面上 设气球所在位置为 ...
- 郑轻校赛 2127 tmk射气球 (数学)
Description 有一天TMK在做一个飞艇环游世界,突然他发现有一个气球匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去射气球,为了提高射击的准确性,他首先在飞艇上找到一个离气球最近的 ...
- [Leetcode 452] 最少需要射出多少支箭Minimum Number of Arrows to Burst Balloons 贪心 重载
[题目] There are a number of spherical balloons spread in two-dimensional space. For each balloon, pro ...
- leetcode 452用少量的箭射爆气球
类似于区间调度问题,使用贪心算法:首先对所有气球按照起始坐标大小排序,然后每次总是优先选择起始坐标小的气球中的右边坐标,然后再选择下一个: 排完序之后,下一个可能有如上图所示几种情况, 1) 当n ...
- V6厂最新V4版本卡地亚蓝气球大号42mm男表|价格报价|
大家好!为大家带来一款贵族气质的V6厂卡地亚蓝气球大号42mm男表!众所周知卡地亚品牌给人的印象是非常尊贵.奢华的,而且卡地亚蓝气球系列的表款都有着极高的识别度,而且每一款都是极受欢迎的热门腕表,接下 ...
- [Swift]LeetCode452. 用最少数量的箭引爆气球 | Minimum Number of Arrows to Burst Balloons
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...
- LeetCode:用最少的箭引爆气球【452】
LeetCode:用最少的箭引爆气球[452] 题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道 ...
- Leetcode 452.用最少数量的箭引爆气球
用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐 ...
随机推荐
- python中的私有变量
class Test1: def f1(self): self.name ="张三" self.__age = 20 #使用名称变形实现私有变量 print(self.name) ...
- mysql 与linux ~ 内存分析与调优
一 简介:linux内存和mysql二 分类 1 用户空间和内核空间 用户空间内存,从低到高分别是五种不同的内存段 1 只读段 包含代码和常量等 2 数据段 包含全局 ...
- python基础-----异常问题
---恢复内容开始--- 当发生python不知所措的错误时,python会创建一个异常对象, 如果你编写处理该异常的代码,程序将会继续运行: 如果你未对异常做任何处理,程序将会停止,并显示一个tra ...
- FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- qemu中使用9p,支持host和guest中共享目录【转】
转自:https://blog.csdn.net/ayu_ag/article/details/52956351 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csd ...
- 两种 AuthorizationSchemes 在 ASP.NET Core 2
Welcome to IdentityServer4: https://identityserver4.readthedocs.io/en/release/ 支持 ASP.NET Core 2 ...
- lnmp 搭建 初试
#初始化环境检查 # uname -r -.el6.x86_64 # uname -m x86_64 #添加mysql用户 useradd -s /sbin/nologin mysql -M #下载安 ...
- 设计模式C++学习笔记之二(Proxy代理模式)
代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢.cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com.现在贴 ...
- 获取图片的EXIF信息
对于专业的摄影师来说,Exif信息是很重要的信息,也包含了非常多的东西 1.EXIF EXIF(Exchangeable Image File)是“可交换图像文件”的缩写,当中包含了专门为数码相机的照 ...
- ansible笔记(9):常用模块之包管理模块
ansible笔记():常用模块之包管理模块 yum_repository模块 yum_repository模块可以帮助我们管理远程主机上的yum仓库. 此处我们介绍一些yum_repository模 ...