CSU 1407: 最短距离(数学啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1407

Description

两个点AB均在做匀速直线运动。给出t = 0时刻AB的坐标,以及AB的速度,计算t ≥ 0时两个点的距离的最小值。

Input

输入的第一行包含一个整数T (1 ≤ T ≤ 200),表示一共有T组测试数据。

对于每组测试数据,第一行包含4个整数xAyAvAxvAy (-103 ≤ xAyAvAxvAy ≤ 103),表示t = 0时刻A的坐标为(xAyA),A的速度在x轴方向上的分量为vAx,在y轴上的分量为vAy。第二行包含四个整数xByBvBxvBy (-103 ≤ xByBvBxvBy ≤ 103),以相同的方式给出了B的各项属性。

Output

对于每组测试数据,输出t ≥ 0时两个点距离的最小值,保留8位小数。

Sample Input

6
0 0 0 0
0 1 0 1
0 0 -1 1
0 0 1 -1
0 1 1 0
2 0 0 1
0 1 1 0
2 0 1 0
0 0 -1 1
1 1 1 -1
997 997 -1000 -1000
-1000 -1000 1000 1000

Sample Output

1.00000000
0.00000000
0.70710678
2.23606798
1.41421356
0.00000000

HINT

Source

中南大学第八届大学生程序设计竞赛

代码如下:

#include <cstdio>
#include <cmath>
#include <cstring>

int main()
{
    int t;
    double xa, ya, vax, vay;
    double xb, yb, vbx, vby;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf%lf",&xa,&ya,&vax,&vay);
        scanf("%lf%lf%lf%lf",&xb,&yb,&vbx,&vby);
        //dis^2 = a*t^2+b*t+c
        double a = ((vax-vbx)*(vax-vbx)+(vay-vby)*(vay-vby)); //a一定>=0
        double b = 2*(xa*(vax-vbx)+xb*(vbx-vax)+ya*(vay-vby)+yb*(vby-vay));
        double c = xa*(xa-2*xb)+ya*(ya-2*yb)+yb*yb+xb*xb;
        double dis1 = 0, dis2 = 0, dis3 = 0;
        double xx = -(2*a)/b;//顶点坐标
        double yy = sqrt((4*a*c-b*b)/(4*a));

        double d = -b/(2*a);//解:求导得:2*a*x+b = 0;
        if(a == 0)
        {
            dis1 = sqrt(c);
            printf("%.8lf\n",dis1);
        }
        else if(a > 0)
        {
            if(d >= 0)
            {
                dis2 = yy;
            }
            else
            {
                dis2 = sqrt(c);
            }
            printf("%.8lf\n",dis2);
        }
//        printf("dis1:%.8lf\n",dis1);
//        printf("dis2:%.8lf\n",dis2);
    }
    return 0;
}
时间: 2024-08-07 04:33:06

CSU 1407: 最短距离(数学啊 )的相关文章

数学建模论坛

数学建模论坛: http://bbs.agoil.cn/thread-htm-fid-402.html http://bbs.pinggu.org/biaoqian/shuxuejianmo/ http://tieba.baidu.com/f?kw=%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1&ie=utf-8 http://www.madio.net/forum.php http://www.matlabsky.com/topic-contest-mcm.html

CSU 1290 DP解决数学期望问题

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1290 题目大意: 给定k个数,每次可以生成0-N-1中的任何一个数,k个数中出现不同的整数的个数的数学期望 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 #define N 1005 5 double dp[N]; 6 int main() 7 { 8 int T,k,n; 9 scan

【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)

题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1810 题目大意: 一个长度为N的十进制数,R(i,j)表示将第i位到第j位翻转过来后的数字,求mod 109+7 题目思路: [数学] 这题换一种思路,看每个数字能够对答案的贡献情况.(可以手推01,10,001,010,100.....,也可以像我一样写个暴力打个10以内的表看看规律) 现在先考虑位置为i的数字为1的情况(最后乘上这个数字就行).可以发现贡献是对称的(第i位的1和第

【模拟】【数学】CSU 1803 2016 (2016湖南省第十二届大学生计算机程序设计竞赛)

题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1803 题目大意: 给定n,m(n,m<=109)1<=i<=n,1<=j<=m,求i*j%2016=0的方案数. 题目思路: [模拟][数学] 按照%2016的余数分类.每增加一个2016就又多一种方案.统计是2016的几倍,根据余数分类.最后枚举i,j的余数即可求解. 1 // 2 //by coolxxx 3 //#include<bits/stdc++

CSU 1505: 酷酷的单词(数学啊)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1505 Description 输入一些仅由小写字母组成的单词.你的任务是统计有多少个单词是"酷"的,即每种字母出现的次数都不同. 比如ada是酷的,因为a出现2次,d出现1次,而1和2不同.再比如,banana也是酷的,因为a出现3次,n出现2次,b出现1次.但是,bbacccd不是酷的,因为a和d出现的次数相同(均为1次). Input 输入包含不超过30组数据.每组数据第

CSU 1507: 超大型LED显示屏(数学啊)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1507 Description Input 输入包含不超过100组数据.每组数据第一行为"START hh:mm:ss",表示比赛开始时刻为hh:mm:ss.最后一行为"END hh:mm:ss",即比赛结束时刻.二者之间至少会有一个SCORE信息,格式为"SCORE hh:mm:ss team score",其中team要么是"

CSU 1409: 集合的并(数学啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1409 Description 给出两个由整数组成的集合A, B,计算A ∪ B中包含多少个整数. Input 输入的第一行包含一个整数T (T > 0),表示一共有T组测试数据. 对于每组测试数据,第一行包含一个整数n (1 ≤ n ≤ 105).第二行包含2n个整数a1, b1, a2, b2, ..., an, bn (0 < a1 ≤ b1 < a2 ≤ b2 < 

CSU 1410: 整数转换(数学啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1410 Description 我们可以通过对一个整数A进行加1操作或者乘2操作使其转换为另一个整数B. 给出两个整数X, Y,计算至少需要多少步才能将X转换为Y.. Input 输入的第一行包含一个整数T (1 ≤ T ≤ 500),表示一共有T组测试数据. 每组测试数据占一行,包含两个整数X, Y (1 ≤ X ≤ Y ≤ 1018). Output 对于每组测试数据,输出至少需要多

CSU 1265: Dice (数学啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1265 Description An example of a traditional dice is a rounded cube, with each of its six faces showing a different number of dots from 1 to 6. When thrown or rolled, the dice comes to rest showin