就是题解的思路,很好实现
#pragma GCC optimize(3, "Ofast", "inline")
#include <bits/stdc++.h>
using namespace std;
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define ll long long
#define ull unsigned long long
#define endl "\n"
#define lowbit(x) ((x) & (-x))
#define inf 0x3f3f3f3f
#define INF LONG_LONG_MAX
#define IOS ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define all(v) v.begin(), v.end()
#define pi acos(-1.0)
#define sz(a) ((int)a.size())
#define COS(x) cos(1.0 * x * pi / 180.0)
#define SIN(x) sin(1.0 * x * pi / 180.0)
#define db(v) cout << v << endl
#define FC(x) fixed << setprecision(x) // C++保留小数
#define mems(a, x) memset((a), (x), sizeof(a))
#define lc u << 1
#define rc u << 1 | 1
typedef pair<int, int> pii;
const int N=1e6+10;
double x[N],y[N];
struct noo{
double xx,yy,chaa,cha;
}num[N];
bool cmp1(noo a,noo b){
return a.chaa<b.chaa;
}
bool cmp2(noo a,noo b){
return a.cha<b.cha;
}
void solve(){
int n;cin>>n;
for(int i=1;i<=n;i++) scanf("%lf %lf",&x[i],&y[i]);
for(int i=1;i<=n;i++){
double cha1=x[i]-y[i],cha2=x[i]+y[i];
num[i]={x[i],y[i],cha1,cha2};
}
double ans=-1;
sort(num+1,num+n+1,cmp1);
// for(int i=1;i<=n;i++) cout<<num[i].xx<<' '<<num[i].yy<<'\n';
for(int i=1;i<=n-1;i++){
double a1=num[i].xx,b1=num[i].yy,a2=num[i+1].xx,b2=num[i+1].yy;
// cout<<a1<<' '<<b1<<' '<<a2<<' '<<b2<<'\n';
double t=(fabs(a1-a2)+fabs(b1-b2))/(sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)));
// cout<<t<<'\n';
ans=max(ans,t);
}
sort(num+1,num+1+n,cmp2);
for(int i=1;i<=n-1;i++){
double a1=num[i].xx,b1=num[i].yy,a2=num[i+1].xx,b2=num[i+1].yy;
double t=(fabs(a1-a2)+fabs(b1-b2))/(sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)));
ans=max(ans,t);
}
printf("%.12lf\n",ans);
}
signed main()
{
#ifdef lw
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int _ = 1;
cin >> _;
while(_--)
{
// n=i;
solve();
// cout<<'\n';
}
return 0;