$AcWing$

$Sol$

平面最近点对板子题,注意要求的是两种不同的点之间的距离.

$Code$

#include<bits/stdc++.h>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2100000000
using namespace std;
il int read()
{
Rg int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int T,n;
struct node{int x,y;bool tp;}a[(int)1e5*+],tmp[(int)1e5*+];
il bool cmp(node x,node y){if(x.x==y.x)return x.y<y.y;return x.x<y.x;}
il bool cmp1(node x,node y){return x.y<y.y;}
il ll dis(node x,node y){db xx=x.x-y.x,yy=x.y-y.y;return xx*xx+yy*yy;}
il ll sol(int l,int r)
{
if(l>r || l==r)return inf;
if(l+==r)
{
if(a[l].tp!=a[r].tp){return dis(a[l],a[r]);}
else return inf;
}
Rg int mid=(l+r)>>,ct=;
ll mins=min(sol(l,mid),sol(mid+,r));
go(i,l,r){if((a[i].x-a[mid].x)*(a[i].x-a[mid].x)<=mins)tmp[++ct]=a[i];}
sort(tmp+,tmp+ct+,cmp1);
go(i,,ct)
go(j,i+,ct)
{
if((tmp[j].y-tmp[i].y)*(tmp[j].y-tmp[i].y)>mins)break;
if(tmp[i].tp!=tmp[j].tp)mins=min(mins,dis(tmp[i],tmp[j]));
}
return mins;
}
int main()
{
T=read();
while(T--)
{
n=read();
go(i,,n)a[i]=(node){read(),read(),};
go(i,,n)a[i+n]=(node){read(),read(),};
sort(a+,a+n*+,cmp);
printf("%.3lf\n",sqrt(sol(,*n)));
}
return ;
}

随机推荐

  1. 设计模式 - 工厂模式(factory pattern) 具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/27081511 工厂模式(factory pa ...

  2. iptables 连线追踪(Connection tracking)

    「连線追蹤」:提供可用於判断包相关性的额外资讯.举例来說,一次FTP session同时需要两条分离的连線,控制与资料传输各一:用於追蹤FTP连線的扩充模组,运用对於FTP恊定的认知,从控制连線上流动 ...

  3. @codeforces - 708D@ Incorrect Flow

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个有源点与汇点的图 G,并对于每一条边 (u, v) 给定 ...

  4. 洛谷 2158 [SDOI2008]仪仗队

    Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...

  5. codeforces2B.The least round way 题解 动态规划/模拟

    题目出处:http://codeforces.com/problemset/problem/2/B 题目描述 给你一个 \(n \times n\) 的二维数组,它包含的元素都是非负整数.你需要寻找一 ...

  6. PyTorch中view的用法

    相当于numpy中resize()的功能,但是用法可能不太一样. 我的理解是: 把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其 ...

  7. Python--day27--设计模式

    设计模式:单例模式

  8. @JsonIgnore @JsonIdentityInfo 处理Hibernate 循环引用的问题

    enterprise和user一对一的关系: @Entity @Table(name = "enterprise") public class Enterprise extends ...

  9. [C++] WinAES的问题

    WinAES是个不错的windows CAPI封装. 如果C++程序需要和java的程序进行aes加解密通讯,那么WinAES的代码是有问题的. java的aes代码缺省不会设置IV而且采用ECB模式 ...

  10. java 泛型的上限与下限

    设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类: 声明对象:类名<? extends 类> 对象名 定义类:类名<泛型标签 extends 类>{ ...