Gym 100971F Two Points

来源:互联网 发布:linux 更改时区 编辑:程序博客网 时间:2024/05/18 17:05

题目链接

题意:给定两点,及它们各自的运功方向,求最小距离。

分析:初中数学。。。把直线参数方程求出,再套两点距离公式,二次函数求最值问题。

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int main(void){    int x1,y1,x2,y2;    int v1x,v1y,v2x,v2y;    while(scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&v1x,&v1y,&v2x,&v2y)==8)    {        double dx=x1-x2;        double dy=y1-y2;        double dvx=v1x-v2x;        double dvy=v1y-v2y;        double a=dvx*dvx+dvy*dvy;        double b=dvx*dx+dvy*dy;        double c=dx*dx+dy*dy;        double t=b/a;        if(a==0)        {            printf("%.15lf\n",sqrt(c));            continue;        }        if(t>=0)        printf("%.15lf\n",sqrt(c));        else        printf("%.15lf\n",sqrt(a*t*t-2*b*t+c));    }    return 0;}
0 0
原创粉丝点击