-- 点我 --

题目大意 :给你一堆点,求一个最小圆能够覆盖两个点的半径(最近两点距离的一半);

最多100000个点,暴力即O(n^2)会超时,考虑二分,先求左边最短距离dl,右边dr, 和一个点左, 一个点在右的情况, 求d;

#include<bits/stdc++.h>

using namespace std;

#define lint long long
#define maxn 100005
#define mod 1e9+7 struct point
{
double x, y;
}; int n;
point a[maxn];
vector<point> rp, lp; bool cmpx(point a, point b)
{
return a.x == b.x? a.y < b.y: a.x < b.x;
} bool cmpy(point a, point b)
{
return a.y == b.y? a.x < b.x: a.y < b.y;
} double dis(point a ,point b)
{
return sqrt(pow(a.x - b.x , )+pow(a.y - b.y, ));
} double solver(int l, int r)
{
if(r - l == ) return dis(a[l], a[r]);
else if(l == r) return ;
int mid = (l+r) >> ;
double d = min(solver(l, mid), solver(mid+, r));
lp.clear(); rp.clear(); for(int i = l; i <= mid; i++)
if(a[mid].x - a[i].x <= d)
lp.push_back(a[i]); for(int i = mid+; i <= r; i++)
if(a[i].x - a[mid].x < d)
rp.push_back(a[i]); sort(rp.begin(), rp.end(), cmpy);
for(int i = ; i < lp.size(); i++)
for(int j = ; j < rp.size(); j++)
{
if(fabs(rp[j].y - lp[i].y) < d) d = min(dis(rp[j], lp[i]), d);
if(rp[j].y - lp[i].y >= d) break;
} return d; } int main()
{
int n;
cin >> n;
while(n)
{
for(int i = ; i <= n; i++)
scanf("%lf%lf", &a[i].x,&a[i].y);
sort(a+, a+n+, cmpx);
double d = solver(, n)/;
printf("%.2lf\n", d);
cin >> n;
} }

HDU1007.Quoit Design的更多相关文章

  1. HDU1007 Quoit Design 【分治】

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

  2. HDU1007 Quoit Design掷环游戏

    Quoit Design 看懂题意以后发现就是找平面最近点对间距离除以2. 平面上最近点对是经典的分治,我的解析 直接上代码 #include<bits/stdc++.h> using n ...

  3. (hdu1007)Quoit Design,求最近点对

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

  4. HDU-1007 Quoit Design 平面最近点对

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 简单裸题,测测模板,G++速度快了不少,应该是编译的时候对比C++优化了不少.. //STATU ...

  5. ACM-计算几何之Quoit Design——hdu1007 zoj2107

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

  6. Quoit Design(hdu1007)最近点对问题。模版哦!

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

  7. Quoit Design(hdu1007)

    ---恢复内容开始--- Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  8. HDU 1007 Quoit Design(二分+浮点数精度控制)

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

  9. 杭电OJ——1007 Quoit Design(最近点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground? Quoit is a game in whic ...

随机推荐

  1. 20165317 Linux安装及学习

    Linux安装及学习 一.Linux的安装 我通过virtualbox和ubuntu官网下载了virtualbox5.2.6和ubuntu17.04版本. 在操作过程中,我基本是按照老师的步骤进行的, ...

  2. ubuntu64位系统编译时头文件找不到的问题(可以查看g++ -v路径,设置export C_INCLUDE_PATH,CPLUS_INCLUDE_PATH)

    今天编译webrtc时出现以下错误: ninja -C out/Debug Allninja: Entering directory `out/Debug'[1/6] CXX obj/talk/app ...

  3. python面试题~反射,元类,单例

    1 什么是反射?以及应用场景? test.py def f1(): print('f1') def f2(): print('f2') def f3(): print('f3') def f4(): ...

  4. 对oracle中SQL优化的理解

    Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间.要达到上述目的,我们通常只有如下三种方法可以选择:1.降低目标SQL语句的资源消耗.2.并行执行目标SQL语句.3.平衡系统 ...

  5. MySQL模拟Oralce闪回操作

    在前面的文章中我们介绍了MySQL误操作后数据恢复(update,delete忘加where条件),大概操作是通过sed命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作 ...

  6. CentOS安装python3.5.0+uwsgi+nginx

    1安装编译工具 yum install zlib-devel bzip2-devel openssl-devel python-devel kernel-devel libffi-devel ncur ...

  7. CentOS+Uwsgi+Nginx发布Flask开发的WebAPI

    1.WebAPI 开发工具VS 于Windows环境中开发完成后使用SFTP进行同步文件到Centos中使用 2.重点:WebAPI触发的方法是为了发送Celery异步调度任务 Celery框架使用涉 ...

  8. Python递归优化方法

    递归栈溢出 Python的递归调用栈的深度有限制,默认深度为998,可以通过sys.getrecursionlimit()查看. 针对递归栈溢出,我们可以将默认深度设置为大一些,这样不会报错,但是再大 ...

  9. MACD回零轴有三种方式

    MACD回零轴三种方式 MACD上双线回抽或者回档到0轴附近: 第一主动回零轴. 第二被动回零轴. 第三单N回零轴. 随后的走势第二种涨幅最猛.第三种级别最大. 这里要正确理解背离.背离有三种.1,指 ...

  10. 004-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-共享服务中心建设原则

    一般来说服务能力包括两个层次,一个是底层paas的能力,PaaS层结局大型架构在分布式.可靠性.可用性.容错.监控以及运维层面上的通用需求:第二个层次是业务能力,业务能力提供云化的核心业务支撑能力,这 ...