简单裸题，测测模板，G++速度快了不少，应该是编译的时候对比C++优化了不少。。

``` //STATUS:G++_AC_1703MS_5004KB
#include <functional>
#include <algorithm>
#include <iostream>
//#include <ext/rope>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <numeric>
#include <cstring>
#include <cassert>
#include <cstdio>
#include <string>
#include <vector>
#include <bitset>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <list>
#include <set>
#include <map>
using namespace std;
//using namespace __gnu_cxx;
//define
#define pii pair<int,int>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define PI acos(-1.0)
//typedef
typedef __int64 LL;
typedef unsigned __int64 ULL;
//const
;
const int INF=0x3f3f3f3f;
,STA=;
;
;
const double OO=1e15;
]={-,,,};
]={,,,-};
]={,,,,,,,,,,,,};
//Daily Use ...
inline int sign(double x){return (x>EPS)-(x<-EPS);}
template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
template<class T> inline T Min(T a,T b){return a<b?a:b;}
template<class T> inline T Max(T a,T b){return a>b?a:b;}
template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
//End
struct Node{  //id为nod排序后的编号值，index为排序前的标号值(随便自己定义)
double x,y;
int id,index;
Node(){}
Node(double _x,double _y,int _index):x(_x),y(_y),index(_index){}
}nod[N],temp[N];

int n;

double dist(Node &a,Node &b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}

bool cmpxy(Node a,Node b)  //先按x排序,然后按y排序
{
return a.x!=b.x?a.x<b.x:a.y<b.y;
}

bool cmpy(Node a,Node b)  //按y排序
{
return a.y<b.y;
}

pii Closest_Pair(int l,int r)  //返回排序后点的编号
{
==r)return pii(l,r);   //只有一个点或者两个点
double d,d1,d2;
;
//左右两边最小距离点的编号
pii pn1=Closest_Pair(l,mid);
pii pn2=Closest_Pair(mid+,r);
//左右两遍的最小距离
d1=(pn1.first==pn1.second?OO:dist(nod[pn1.first],nod[pn1.second]));
d2=(pn2.first==pn2.second?OO:dist(nod[pn2.first],nod[pn2.second]));
pii ret;
d=Min(d1,d2);
ret=d1<d2?pn1:pn2;
//找出在mid-d,mid+d之间的点
;i<=r;i++){
if(fabs(nod[mid].x-nod[i].x)<=d){
temp[k++]=nod[i];
}
}
//合并两边,求最小距离
sort(temp,temp+k,cmpy);
;i<k;i++){
;j<k && fabs(temp[j].y-temp[i].y)<d;j++){
if(dist(temp[i],temp[j])<d){
d=dist(temp[i],temp[j]);
ret=make_pair(temp[i].id,temp[j].id);
}
}
}

return ret;
}

void Init()   //初始化点
{
int i;
double x,y;
;i<n;i++){
scanf("%lf%lf",&x,&y);
nod[i]=Node(x,y,i);
}
sort(nod,nod+n,cmpxy);
;i<n;i++)nod[i].id=i;  //排序后节点编号
}

int main(){
//   freopen("in.txt","r",stdin);
int T,i,j;
while(~scanf("%d",&n) && n)
{
Init();
pii ans=Closest_Pair(,n-);

printf();
}
;
}```

## HDU-1007 Quoit Design 平面最近点对的更多相关文章

1. HDU 1007 Quoit Design 平面内最近点对

http://acm.hdu.edu.cn/showproblem.php?pid=1007 上半年在人人上看到过这个题,当时就知道用分治但是没有仔细想... 今年多校又出了这个...于是学习了一下平 ...

2. HDU 1007 Quoit Design | 平面分治

暂鸽 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #d ...

3. HDU 1007 Quoit Design（经典最近点对问题）

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...

4. HDU 1007 Quoit Design【计算几何/分治/最近点对】

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

5. hdu 1007 Quoit Design (最近点对问题)

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

6. hdu 1007 Quoit Design 分治求最近点对

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

7. HDU 1007 Quoit Design（二分+浮点数精度控制）

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

8. HDU 1007 Quoit Design

传送门 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

9. HDU 1007 Quoit Design（计算几何の最近点对）

Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...

10. hdu 1007 Quoit Design(分治法求最近点对)

大致题意:给N个点,求最近点对的距离 d :输出:r = d/2. // Time 2093 ms; Memory 1812 K #include<iostream> #include&l ...

## 随机推荐

1. html学习第三天—— 第11章 盒子模型 div

盒模型--边框(一) 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为div来设置边框粗细为2px.样式为实心的.颜色为红色的边框: div ...

2. 用SQL语句获得一个存储过程返回的表

1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

3. virtualenv中ImportError: No module named django

问题现象:在代码py文件中,import django 报错,但是在python shell中直接执行这个语句没错, 网上搜索了下,自己测试了下,确定原因是由于使用了python中的virtualen ...

4. React笔记_(5)_react语法4

ajax 数据应用场景 在真实的开发环境中,拿到了产品需求,第一件事不是逼着后台开发人员先完成,然后前端再介入开发,这样太浪费时间. 正确的做法是跟后端人员先商量好接口名称,请求参数,返回的数据格式等 ...

5. SAP接口编程 之 JCo3.0系列(01)：JCoDestination

SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...

6. WM_INITDIALOG与WM_CREATE消息的区别

WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕(可以安全的使用这个窗口了,例如在它上面画控件等).在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说 ...

7. hdu 1561

有依赖的背包,用树形dp解 #include<iostream> #include<cstdio> #include<cstring> #include<al ...

8. 济南最新公交线路一览（BRT）

济南最新公交线路一览(BRT) 济南BRT1路 高速公交线路 黄岗路东5:30-21:30 全福立交桥西5:30-21:30 票价1元,刷卡9折,月票有效 高速公交公司 去程:黄岗路东(BRT) - ...

9. 无法删除 C_PAN.GHO: 访问被拒绝 解决办法

右击“C-PAN.GHO",属性->安全(如果没有安全选项卡,可以在工具->文件夹选项->查看中将”使用简单头文件共享“前的对勾去掉),这时”添加“和”删除“按钮应该是不可 ...

10. React 学习(三) ---- state 和 事件处理函数

在上两节中,我们讲述了props, 组件使用props进行渲染,但是这是一次性的, props渲染完成之后就不做任何事情了,但是现实中却不是这样的,当我们点击购物车上的加减按钮时,数量会自动加1或减1 ...