提交时间:2026-04-15 21:47:50
运行 ID: 41318
#include<bits/stdc++.h> using namespace std; long long _,n; map<long long,long long>mp1,mp2; struct sss{ long long x,y; }poi[100005]; inline bool cmp(sss a,sss b){ return abs(a.x-a.y)<abs(b.x-b.y); } inline double dis(long long i,long long j){ return sqrtl((poi[i].x-poi[j].x)*(poi[i].x-poi[j].x)+(poi[i].y-poi[j].y)*(poi[i].y-poi[j].y)); } inline double q(long long i,long long j){ return (abs(poi[i].x-poi[j].x)+abs(poi[i].y-poi[j].y))/dis(i,j); } int main(){ //freopen("pair.in","r",stdin); //freopen("pair.out","w",stdout); scanf("%lld",&_); while(_--){ scanf("%lld",&n); mp1.clear(); mp2.clear(); long long flag=0; for(int i=1;i<=n;i++){ scanf("%lld%lld",&poi[i].x,&poi[i].y); if(mp1[poi[i].x+poi[i].y]){ flag=1; } if(mp2[poi[i].x-poi[i].y]){ flag=1; } mp1[poi[i].x+poi[i].y]++,mp2[poi[i].x-poi[i].y]++; } if(flag==1){ double ji=sqrtl(2); printf("%.10lf\n",ji); continue; } sort(poi+1,poi+n+1,cmp); double ans=0; for(int i=1;i<=n;i++){ double __=dis(1,2); if(i!=1){ ans=max(ans,q(i,i-1)); } if(i!=n){ ans=max(ans,q(i,i+1)); } } printf("%.10lf\n",ans); } }