题目大意&前置知识

将军饮马问题,马和帐篷的坐标都位于第一象限,横纵轴是河。

解法

本场签到题。将军饮马问题的思想就是做对称,于是将马根据河流做对称点,后者到帐篷的直线距离就是答案。证明很显然,根据全等三角形,马到河流上任意一点的距离恒等于对称点到那个点的距离,于是直接两点之间线段最短。

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