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 ...
随机推荐
- python之类中如何判断是函数还是方法
通常我们认为在类中的函数为方法,类外面声明def为函数,这种说法有点片面 方法1: class Work(object): def show(self): print("执行show方法&q ...
- falsk 与 django cookie和session存、取、删的区别
falsk cookie的存取删需导入from flask import Flask,make_response,request# 存COOKIE的方法@app.route('/setcookie') ...
- bzoj 2563 [2012国家集训队Round 1 day2] 阿狸和桃子的游戏 贪心
正解:贪心 解题报告: 链接在这儿! 知道解法之后会jio的好像很简单的样子……其实挺难想到的QAQ 不过大佬讲了方法之后还是懂了 有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的, ...
- TZOJ:最大连续子序列
描述 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子 ...
- JavaScript学习(二)
比如isNaN("100")会返回true 注意:parseInt()的参数必须以数字开头
- env:bash \r解决
1.brew install dos2unix2.find . -type f -exec dos2unix {} \;
- Laravel上传产品图片Uploading img
这节我们讲Laravel产品图片上传,有很多方式可以实现,这里我们用intervention/image插件来进行.首先安装intervention/image插件,在命令行输入 composer r ...
- 小程序要求的 TLS 版本必须大于等于 1.2
1.打开windows powershell 右击屏幕左下角的开始->所有程序->附件->“Windows PowerShell”. 2.在 PowerShell中运行以 ...
- 算法面经之讯飞+CVTE
一.科大讯飞(合肥) 概况:刚经历了科大讯飞的初面,大概35分钟左右,问的内容比较笼统,主要针对简历上的内容来,面试官比较亲切,回忆了一下面试内容. 建议:把简历上的内容整吧清楚,不知道的别瞎写,写了 ...
- python线程中的join(转)
Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知识点一:当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多 ...