HDU1007.Quoit Design
-- 点我 --
题目大意 :给你一堆点,求一个最小圆能够覆盖两个点的半径(最近两点距离的一半);
最多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的更多相关文章
- HDU1007 Quoit Design 【分治】
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDU1007 Quoit Design掷环游戏
Quoit Design 看懂题意以后发现就是找平面最近点对间距离除以2. 平面上最近点对是经典的分治,我的解析 直接上代码 #include<bits/stdc++.h> using n ...
- (hdu1007)Quoit Design,求最近点对
Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...
- HDU-1007 Quoit Design 平面最近点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 简单裸题,测测模板,G++速度快了不少,应该是编译的时候对比C++优化了不少.. //STATU ...
- ACM-计算几何之Quoit Design——hdu1007 zoj2107
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- Quoit Design(hdu1007)最近点对问题。模版哦!
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Quoit Design(hdu1007)
---恢复内容开始--- Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- HDU 1007 Quoit Design(二分+浮点数精度控制)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 杭电OJ——1007 Quoit Design(最近点对问题)
Quoit Design Problem Description Have you ever played quoit in a playground? Quoit is a game in whic ...
随机推荐
- SR锁存器
CRM(临界连续模式)BOOST PFC 电路控制系统 SR锁存器 S和R都等于0的时候为什么有两个不同的Q?正因为这样才叫锁存器.Q’是Q的取反,不可能相同.Q*和Q‘不一样.Q是Q*的前一个状态. ...
- spring boot动态数据源方案
动态数据源 1.背景 动态数据源在实际的业务场景下需求很多,而且想要沟通多数据库确实需要封装这种工具,针对于bi工具可能涉及到从不同的业务库或者数据仓库中获取数据,动态数据源就更加有意义. 2.依赖 ...
- springmvc shiro整合cas单点登入
shiro cas分为登入跟登出 maven依赖: <dependency> <groupId>org.apache.shiro</groupId> <art ...
- tensorflow入门笔记(三) tf.GraphKeys
tf.GraphKeys类存放了图集用到的标准名称. 该标准库使用各种已知的名称收集和检索图中相关的值.例如,tf.Optimizer子类在没有明确指定待优化变量的情况下默认优化被收集到tf.Grap ...
- LeetCode-188.Best Time to Buy and Sell Stock IV
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- 前端HTML目录
前端 HTML 简介 前端 HTML文档结构介绍 前端 HTML文档 详解 前端 HTML 注释 前端 HTML标签介绍 前端 HTML的规范 前端 HTML 常用标签 head标签相关内容 前端 H ...
- 显示日期的指令: date
1.显示日期的指令: date (1)参数: (2)实例
- Gradle全局变量定义及引用
在Project的build.gradle脚本中定义一些全局变量 ext { compileSdkVersion = 21 buildToolsVersion = "24.0.1" ...
- Linux下fork机制详解(以PHP为例)
考:https://blog.csdn.net/jason314/article/details/5640969 1.fork简介 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统 ...
- jenkins 邮箱配置---腾讯企业邮箱
一,简单设置 1.登陆jenkins--> 系统管理 ---> 系统设置 2.邮箱就是发送者的邮箱,密码是登陆邮箱的密码 3.设置完以后,可以点击‘test configuration’, ...