文章

16

粉丝

0

获赞

66

访问

3.5k

头像
最短距离 题解:
P1679 中南大学机试题
发布于2025年3月22日 21:55
阅读数 84

#并非自己想出来的,参考了博客园。原题解链接: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...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发