文章
74
粉丝
0
获赞
98
访问
9.0k
#include<bits/stdc++.h>
using namespace std;
double minDistance(){
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
int u1, v1, u2, v2;
cin >> u1 >> v1 >> u2 >> v2;
int x = x1 - x2;
int u = u1 - u2;
int y = y1 - y2;
int v = v1 - v2;
int a = (u*u + v*v);
int b = 2*(u*x + v*y);
int c = (x*x + y*y);
double mid = -1.0*b/(2*a); // 一元二次抛物线对称轴
if(mid < 0) return sqrt(c); // 取时刻为0时距离最小
else return sqrt(c - (pow(b/2,2) / a)); // 取时间为mid时距离最小
}
int main(){
int t; cin >> t;
int cnt = 0;
while(t --){
cnt ++;
printf("Case %d: %.6lf\n", cnt, minDistance());
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发