题目大意&前置知识
将军饮马问题,马和帐篷的坐标都位于第一象限,横纵轴是河。
解法
本场签到题。将军饮马问题的思想就是做对称,于是将马根据河流做对称点,后者到帐篷的直线距离就是答案。证明很显然,根据全等三角形,马到河流上任意一点的距离恒等于对称点到那个点的距离,于是直接两点之间线段最短。
code
AC代码如下:
//2024.7.25 by lyc
#include <bits/stdc++.h>
using namespace std;
double xg, yg, xt, yt;
double getdis(double x1, double y1, double x2, double y2){
return sqrt(1.0 * (x1 - x2) * (x1 - x2) + 1.0 * (y1 - y2) * (y1 - y2));
}
int main(){
int T;
cin >> T;
while (T--){
cin >> xg >> yg >> xt >> yt;
double res1 = getdis(-xg, yg, xt, yt);
double res2 = getdis(xg, -yg, xt, yt);
double ans = min(res1, res2);
printf("%.10lf\n", ans);
}
return 0;
}
THE END