【郑轻邀请赛 A】tmk射气球
【题目链接】:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2127
【题意】
【题解】
把气球和飞艇所代表的直线投影到xoy面上
设气球所在位置为A(x3,y3)
飞艇所在的直线段的两个端点B(x2,y2),C(x1,y1);
设经过B且垂直BC的直线为l1,经过C且垂直BC的直线为l2;
则如果A在l1和l2所围的范围内;
则最短距离为点到直线的距离(只不过变成3维的了);
如果不在
则最短距离为
A到B和A到C之间的距离的较小者.
点到直线的距离可以根据直角边列个方程算出来
(相当于在一个三角形里面求一条边上的高);
【Number Of WA】
0
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define LL long long
LL h,xx1,yy1,xx2,yy2,xx,yy,zz,XX,YY,ZZ;
LL sqr(LL x) {return x*x;}
double dis(LL x1,LL y1,LL z1,LL x2,LL y2,LL z2)
{
return sqrt(sqr(x1-x2)+sqr(y1-y2)+sqr(z1-z2));
}
bool in(LL x1,LL y1,LL x2,LL y2,LL x3,LL y3)
{
return (x3-x1)*(x2-x1)+(y3-y1)*(y2-y1)>0 && (x1-x2)*(x3-x2)+(y1-y2)*(y3-y2)>0;
}
int main()
{
//freopen("D:\\rush.txt","r",stdin);
int T;
cin >> T;
while (T--)
{
cin >> h >> xx1 >> yy1 >> xx2 >> yy2;
cin >> xx >> yy >> zz >> XX >> YY >> ZZ;
int n;
cin >> n;
rep1(i,1,n)
{
LL t;
cin >> t;
LL xx3,yy3,zz3;
xx3 = xx+XX*t,yy3 = yy+YY*t,zz3 = zz+ZZ*t;
if (xx1==xx2 && yy1==yy2)
{
cout << fixed << setprecision(2) << dis(xx1,yy1,h,xx3,yy3,zz3)<<endl;
continue;
}
double a = dis(xx1,yy1,h,xx3,yy3,zz3),b = dis(xx2,yy2,h,xx3,yy3,zz3);
double c = dis(xx1,yy1,h,xx2,yy2,h);
if (in(xx1,yy1,xx2,yy2,xx3,yy3))
{
double dd = (a*a+c*c-b*b)/(2.0*c);
double ans= sqrt(a*a-dd*dd);
cout << fixed << setprecision(2) << ans <<endl;
}
else
{
cout << fixed << setprecision(2) << min(a,b) <<endl;
}
}
}
return 0;
}
【郑轻邀请赛 A】tmk射气球的更多相关文章
- 【zzulioj 2127】 tmk射气球
比较简单的题,直接求空间中一个点到直线的距离而已,这道题说了直线和水平的平面 平行,我们可以先求投影到直线的距离,然后再算当前点到直线的距离. Description 有一天TMK在做一个飞艇环游世界 ...
- tmk射气球
问题 : tmk射气球 时间限制: 1 Sec 内存限制: 128 MB 题目描述 有一天TMK在做一个飞艇环游世界,突然他发现有一个气球沿匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去 ...
- 【郑轻邀请赛 F】 Tmk吃汤饭
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2132 [题意] [题解] 很容易想到用队列来模拟; 这个队列维护的是正在煮的4个人煮 ...
- 【郑轻邀请赛 D】hipercijevi
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2130 [题意] [题解] 把那个管泛化成一个点; 然后把每一个在管里面的点都和它相连 ...
- 【郑轻邀请赛 E】Can Win
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2131 [题意] [题解] 尽量让自己喜欢的队赢; A内组内的比赛都让自己喜欢的队赢; ...
- 【郑轻邀请赛 H】 维克兹的进制转换
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2134 [题意] [题解] 设f[i]表示数字i分解为二进制数的方案数; 则 如果i为 ...
- 【郑轻邀请赛 B】base64解密
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2128 [题意] [题解] 把密文; 在表中找到每个字符对应的数字; 然后转换成相应的 ...
- 【郑轻邀请赛 I】这里是天堂!
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2135 [题意] [题解] 答案应该为C(n,a)∗C(m,b)/C(n+m,a+b) ...
- 【郑轻邀请赛 C】DOBRI
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2129 [题意] [题解] NMB 直接说i-1,i-2,i-3不就好了- [Numb ...
随机推荐
- go语言笔记——defer作用DB资源等free或实现调试
defer 和追踪 关键字 defer 允许我们推迟到函数返回之前(或任意位置执行 return 语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为 return 语句同样可以 ...
- Nginx网站用Let’sEncrypt证书开HTTPS
- HttpFileCollection 类使用
public ActionResult GetForm() { HttpRequest request = System.Web.HttpContext.Curre ...
- Expected one result (or null) to be returned by selectOne(), but found: 2 和 java.lang.UnsupportedOperationException异常
在学习MyBatis的时候,简简单单的MyBatis+MySql的增删改查操作,但是却出了问题. 刚开始数据库只有一条数据的时候,岁月静好,一切看起来都那么的OJBK.但是,当我往数据库插入第二条数据 ...
- C# System.Environment.GetFolderPath的使用 [转]
原文:https://blog.csdn.net/yongyong521/article/details/75105853 获取系统文件目录 string strPath = Environment. ...
- 自己的myeclipse添加javaee7步骤
1 new一个javaee名字,然后add jars 就可以
- HDU 5279 分治NTT 图的计数
思路: 显然每个子图内都是森林 去掉所有子图1和n都连通且每条大边都存在的情况 直接DP上 NTT优化一波 注意前两项的值.. //By SiriusRen #include <bits/std ...
- “国家队爷”杯液体战争AI比赛!!__SymenYang
原帖 这两天一直在搞这个AI,提供的样例更本不是我的风格啊,看不懂更不会改... 所以我自己写了一个AI的平台,现在在不断的修改AI的策略,smart样例还是很容易过的,让line的行走速度变慢一点到 ...
- 349 Intersection of Two Arrays 两个数组的交集
给定两个数组,写一个函数来计算它们的交集.例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].提示: 每个在结果中的元素必定是唯一的. 我们 ...
- mysql数据的操作
一.插入数据记录 1.插入完整数据记录 INSERT INTO table_name VALUES(value1,value2......valuen); 2.插入数据记录的一部分 INSERT IN ...