文章
16
粉丝
0
获赞
66
访问
3.5k
#并非自己想出来的,参考了博客园。原题解链接:2018年中南大学机试题a题 - Bep - 博客园
本题是数学题,但难在与需要能够推出表达式以下是步骤
思路分析:设t秒后
x3=x1+t*u1 y3=y1+t*v1
x4=x2+t*u2 y4=y2+t*v2
则距离的平方为(x4-x3)^2+(y4-y3)^2 将上述条件代入此式化简得//最关键的一步得出表达式
a*t^2+b*t+c 是一元二次方程
其中a=(u2-u1)^2+(v2-v1)^2 b=2*[(u2-u1)*(x2-x1)+(y2-y1)*(v2-v1)] c=(x2-x1)^2+(y2-y1)^2
会有三种情况,①若两个坐标起始相同则距离最小 ②当u2=u1且v1=v2时,此时两人速度相同相当静止 初始位置便是最短距离
③ 因为上述化简的表达式是一元二次函数,并且两个点的距离任何时候都不会小于0,故开后必定向上
当对称轴小于0时,初始时刻就为最短距离 当对称轴大于0时,对称轴所在的位置就是最短距离
具体代码实现如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int v1, v2, u1, u2, x1, x2, y1, y2;
int V, X, Y, U, n;
double ans, t, a, b, c;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> x1 >> y1 >> x2 >> y2;
cin >> u1 >> v1 >> u2 >> v2;
V = v2 - v1;
U = u2 - u1;
X = x2 - x1;
&n...
登录后发布评论
暂无评论,来抢沙发