提交时间:2024-10-30 18:40:41

运行 ID: 33954

#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e5+10; int T,n; struct Dot{int x,y;}a[N],b[N]; bool cmp1(Dot p,Dot q){return p.x-p.y<q.x-q.y;} bool cmp2(Dot p,Dot q){return p.x+p.y<q.x+q.y;} signed main(){ //freopen("pair.in","r",stdin); //freopen("pair.out","w",stdout); scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%lf%lf",&a[i].x,&a[i].y); b[i]=a[i]; } sort(a+1,a+n+1,cmp1); sort(b+1,b+n+1,cmp2); double ans=0; for(int i=1;i<=n;i++){ if(i!=1){ double xx=abs(a[i].x-a[i-1].x),yy=abs(a[i].y-a[i-1].y); double d_1=xx+yy,d_2=sqrt(xx*xx+yy*yy); //cout<<a[i].x<<" "<<a[i].y<<" "<<a[i-1].x<<" "<<a[i-1].y<<" "<<d_1/d_2<<endl; ans=max(ans,d_1/d_2); } if(i!=n){ double xx=abs(a[i].x-a[i+1].x),yy=abs(a[i].y-a[i+1].y); double d_1=xx+yy,d_2=sqrt(xx*xx+yy*yy); //cout<<a[i].x<<" "<<a[i].y<<" "<<a[i+1].x<<" "<<a[i+1].y<<" "<<d_1/d_2<<endl; ans=max(ans,d_1/d_2); } } for(int i=1;i<=n;i++){ if(i!=1){ double xx=abs(b[i].x-b[i-1].x),yy=abs(b[i].y-b[i-1].y); double d_1=xx+yy,d_2=sqrt(xx*xx+yy*yy); //cout<<b[i].x<<" "<<b[i].y<<" "<<b[i-1].x<<" "<<b[i-1].y<<" "<<d_1/d_2<<endl; ans=max(ans,d_1/d_2); } if(i!=n){ double xx=abs(b[i].x-b[i+1].x),yy=abs(b[i].y-b[i+1].y); double d_1=xx+yy,d_2=sqrt(xx*xx+yy*yy); //cout<<b[i].x<<" "<<b[i].y<<" "<<b[i+1].x<<" "<<b[i+1].y<<" "<<d_1/d_2<<endl; ans=max(ans,d_1/d_2); } } printf("%.10f\n",ans); } return 0; }