专栏文章
题解:UVA10794 The Deadly Olympic Returns!!!
UVA10794题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqh5uj5
- 此快照首次捕获于
- 2025/12/04 04:43 3 个月前
- 此快照最后确认于
- 2025/12/04 04:43 3 个月前
解题思路
首先读取测试用例的数量 T。
对于每个测试用例:
- 读取时间 time。
- 读取第一个导弹的起始位置 (x1, y1, z1) 和经过 time 秒后的位置 (x2, y2, z2),通过计算 (x2 - x1) / time、(y2 - y1) / time、(z2 - z1) / time 得到第一个导弹的速度向量 (vx1, vy1, vz1)。
- 同样地,读取第二个导弹的相关信息并计算其速度向量 (vx2, vy2, vz2)。
- 根据两个导弹的运动方程,设相遇时间为 t,列出关于 t 的二次方程 a * + b * t + c = 0,
- 其中:
= vx1 * vx1 + vy1 * vy1 + vz1 * vz1 + vx2 * vx2 + vy2 * vy2 + vz2 * vz2。
= 2 * (vx1 * (x1 - x2) + vy1 * (y1 - y2) + vz1 * (z1 - z2) + vx2 * (x2 - x1) + vy2 * (y2 - y1) + vz2 * (z2 - z1))。
= (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2)。
- 求解二次方程得到相遇时间 t,如果判别式小于 0,则说明没有相遇点(这里设 t 为 0,
- 根据相遇时间 t 计算两个导弹的相遇点坐标 (meetX1, meetY1, meetZ1) 和 (meetX2, meetY2, meetZ2)。
最后
- 计算并输出两个相遇点之间的距离,保留四位小数。 通过以上步骤,程序可以计算出两个导弹在运动过程中的最小可能距离,并按照要求的格式输出结果。
部分代码
CPP// 计算两点之间的距离
double distance(double x1, double y1, double z1, double x2, double y2, double z2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2));
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...