题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007

  简单裸题,测测模板,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;
 //#pragma comment(linker,"/STACK:102400000,102400000")
 //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. jquery版滑块导航栏

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <script src ...

  2. Timeline Portfolio - 时间轴作品集效果

    这里分享一个超炫的时间轴展示作品集效果.设计师和前端开发人员可以借助这个效果来制作新颖的作品集和个人简历.时间轴专门用来呈现出年代的一系列事件.您可以把这种效果嵌入各种媒体,包括微博,视频和地图,并把 ...

  3. 唉,还是Windows好

    作为一个计算机专业的,常常抱怨Windows慢.一个系统用一段时间慢下来就重装,但是次次重装很麻烦,每次重装之后还得装软件. 另外,Windows比Linux占资源,所以前段时间就想以Linux为主要 ...

  4. Mac OS X开发者准备工作

    迁移到Mac平台做开发后,需要有一系列的准备工作来使我们的工作更顺畅. 1. 安装Homebrew包管理器 苹果系统自带了一个包管理器,但是并不是很好用.现在,现在比较流行的是Homebrew,非常好 ...

  5. 设计模式_Facade_门面模式

    形象例子: 我有一个专业的Nikon相机,我就喜欢自己手动调光圈.快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会.幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门 ...

  6. 基于Karma和Jasmine的AngularJS测试

    1:工程目录结构 y@y:karma-t01$ tree -L 3.├── client│   ├── app│   │   └── user│   ├── bower_components│   │ ...

  7. [HDU1232] 畅通工程 (并查集 or 连通分量)

    Input 测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的 ...

  8. python netifaces模块

    简介 在Linux系统中,我们可以通过ifconfig,route等shell命令来查看系统接口配置,网关和路由等信息.通过shell的正则表达式功能,通过系列复杂操作,我们可以从字符串中提取出相关的 ...

  9. unity transform 常用操作

    1.寻找物体 1.1 寻找满足条件的子物体 ` public static Transform FindObj(Transform transform, Func<Transform, bool ...

  10. 何给域名配置https证书

    原文链接:https://www.cnblogs.com/ymwang/p/6893105.html http和https的区别就是,后者在网络传输过程中会很安全,原因就是给http安装了SSL证书. ...