hdu 1007 Quoit Design(借鉴大神,求解平面对点)

ACM-计算几何之Quoit Design——hdu1007 zoj2107 ACM 计算几何 Quoit Design hdu1007 zoj2107 最近点对 阅读详情

Quoit Design

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 57575    Accepted Submission(s): 15242


Problem Description
Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded.
In the field of Cyberground, the position of each toy is fixed, and the ring is carefully designed so it can only encircle one toy at a time. On the other hand, to make the game look more attractive, the ring is designed to have the largest radius. Given a configuration of the field, you are supposed to find the radius of such a ring.

Assume that all the toys are points on a plane. A point is encircled by the ring if the distance between the point and the center of the ring is strictly less than the radius of the ring. If two toys are placed at the same point, the radius of the ring is considered to be 0.
 

Input
The input consists of several test cases. For each case, the first line contains an integer N (2 <= N <= 100,000), the total number of toys in the field. Then N lines follow, each contains a pair of (x, y) which are the coordinates of a toy. The input is terminated by N = 0.
 

Output
For each test case, print in one line the radius of the ring required by the Cyberground manager, accurate up to 2 decimal places. 
 

Sample Input
  
2 0 0 1 1 2 1 1 1 1 3 -1.5 0 0 0 0 1.5 0
 

Sample Output
  
0.71 0.00 0.75
 
也是非常奇葩了,借鉴大神分治,MLE了,贴出代码:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
const int MAX = 1<<30;
int p[100010];


struct po
{
double p_x;
double p_y;
}point[100010];


bool compare(po p1,po p2)
{
if(p1.p_x == p2.p_x)
{
return p1.p_y<p2.p_y;
}
return p1.p_x<p2.p_x;
}


bool com_y(int a,int b)
{
return point[a].p_y<point[b].p_y;
}


double pos(po p1,po p2)
{
return sqrt((p1.p_x-p2.p_x)*(p1.p_x-p2.p_x)+(p1.p_y-p2.p_y)*(p1.p_y-p2.p_y));
}


double start(int left,int right)
{
if(left == right)
{
return MAX;
}
if(left == right-1)
{
return pos(point[left],point[right]);
}
int mid = abs(left + right)>>1;
double dl = start(left,mid);
double dr = start(mid+1,right);
dl = min(dl,dr);

int k = 0; 
for(int i = left;i < right;++i)
{
if(fabs(point[i].p_x-point[i+1].p_x) < dl)
{
p[k++] = i;
}
}
sort(p,p+k,com_y);
for(int i = 0;i < k;++i)
{
for(int j = i+1;j<k && point[p[j]].p_y-point[p[i]].p_y< dl;++j)
{
dl = min(pos(point[p[j]],point[p[i]]),dl);
}
}
return dl;
}


int main()
{
int n;
while(scanf("%d",&n) && n)
{
for(int i = 0;i < n;++i)
{
scanf("%lf%lf",&point[i].p_x,&point[i].p_y);
}
sort(point,point+n,compare);
double r = start(0,n-1)/2;
printf("%.2lf\n",r);
}
return 0;
}

HDOJ:1007---Quoit Design 这个题目描述的情景应该是我们大家都熟知的套圈游戏,如下图:这题意思就是:我们要拿一个环去套在地上的玩具,这个环大小只能套中一个,去求他的最大的半径。输入是一系列玩具的坐标,输出是环的最大半径。这一题,看似复杂,其实只是一个典型的==“寻找最短点对问题”==,就是去寻找玩具之间最短的距离,最容易想到的是暴力遍历就可以去求,但是那样时间复杂度太高,我们采用分治的方法。 阅读详情

相关推荐

Quoit Design

Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded.

Quoit Design (白话--分治--平面点对问题)

Quoit Design Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded. In the field of Cyb...

Acer12138的博客 1008

Ragflow技术栈分析及二次开发指南

Ragflow是目前团队化部署大模型+RAG的优质方案,不过其仍不适合直接部署使用,本文将从实际使用的角度,对其进行二次开发

兴趣使然的创作者 1万+

Quoit Design - HDU 1007 分治

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 30473    Accepted Submission(s): 8008 Problem Description Have you ev

提比的强行AC 855

《计算机网络》复试问答题总结

DNS 是一个联机分布式数据库系统,负责主机名和 IP 地址之间的转换,需要进行域名查询的机器主动发起域名解析请求,域名服务器则随时准备做出响应。域名服务器的数据库中存放着它所管辖范围的主机名和 IP 地址之间的映射表,域名服务器之间又可以相互联络和协作,以便分布在 Internet 各个域名服务器数据库中的域名都能被有效地搜索,从而实现主机名与 IP 地址的映射。为了提高解析效率,使用了域名缓存技术。在服务器、主机中设置一个专用的内存缓冲区。服务器用来存放近期解析过的域名及其对应的 IP 地址的映射。

weixin_45971154的博客 2029

CarPlay无线连接开发实战:从蓝牙EIR查询到iAP2认证的完整代码逻辑梳理

本文详细解析了无线CarPlay连接开发的完整流程,从蓝牙EIR查询到iAP2认证的代码实现。重点介绍了蓝牙握手、WiFi Beacon帧配置、热点信息准备等关键环节的实战技巧,帮助开发者快速搭建稳定可靠的无线CarPlay连接系统。

weixin_31534091的博客 318

HDU-1007 Quoit Design(计算几何 平面最近点对)

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 64316    Accepted Submission(s): 17026   Problem Description ...

碳酸钙的01妖精的博客 282

保姆级教程:在通达信V7.611上配置欧奈尔RPS曲线(附完整公式与每日更新流程)

本文提供通达信V7.611配置欧奈尔RPS曲线的保姆级教程,涵盖从环境准备、基础设置到核心公式配置的全流程。详细讲解如何创建股票池、编写EXTRS基础公式及RPS显示公式,并附每日更新流程与实战应用技巧,帮助投资者精准捕捉强势股。

weixin_30000735的博客 462

HDU1005——Number Sequence,HDU1006——Tick and Tick,HDU1007——Quoit Design

Problem - 1005 代码思路 函数 :主函数 :这个结果最后是超时运算 代码思路 初始化序列:数组用来存储序列的值。和变量分别用于记录循环节的长度和循环节开始的位置。计算序列:检测循环节:函数通过二分查找算法检测序列中的循环节。一旦找到重复的模式(即连续两项相同),它会记录循环节的开始位置()和长度()。输出结果:这种算法特别适用于计算周期性出现的序列,通过检测循环节可以极大地优化计算过程,尤其是在需要频繁查询大索引位置的场景下。Problem - 1006 代码思路

u014114223的博客 1124

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1537

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4230

hdu 1007 Quoit Design 平面最近点对问题

http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意: 给n个点,求他们两两之间的距离的最小值 使用分治解法, 此题位平面最近点对问题的模板题 将所有点按x排序,然后不断二分,直到每一个小区间内只有1~2个点 对于一个区间l,r,他们的中间值mid, 假如我们知道 l~mid mid+1~r 这两个区间里面点的最短距离d1,d2,那么...

forOnward的博客 190

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

HDU.1007 Quoit Design

文章目录一、题目解读1、原题2、分类3、题意4、输入输出格式5、数据范围二、题解参考1、总体思路2、思路②(1).分析(2).AC代码三、总结与后话1、评价2、后话 一、题目解读 1、原题 HDU.1007 Quoit Design 2、分类 分治法——最近点对 3、题意 给定一些点,求一个圆的半径、满足“圆最多只能使1个点在其内部”。 再稍微转化一下,就是求一堆点里最小的两点间距,然后再除以22...

God-Excious的博客 1313

22、常见加密哈希算法及安全机制解析

本文详细解析了多种常见加密哈希算法,包括SHA系列、RIPEMD、Tiger、HAVAL、Whirlpool等,涵盖其工作原理、安全性与性能对比。同时探讨了哈希攻击方式如预映像攻击和彩虹表,并介绍了盐、MAC、HMAC等防御机制。结合密码存储、消息完整性验证及区块链应用案例,分析了不同场景下的算法选择建议,并展望了哈希算法在创新、融合与标准化方面的未来发展趋势。

seed的博客 391

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu 1007 Quoit Design 求解最近对问题

Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded. In the field of Cyberground,...

badangjiang7195的博客 158

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU1007 Quoit Design(最近点对问题 经典题型)

HDU1007 Quoit Design(最近点对问题 经典题型) HDU1007 Quoit Design最近点对问题 经典题型 题意 思路 AC代码 原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意 一个二维平面上有n个点,求最近两点的距离的1/2 思路 先按照x轴对所有点进行排序,然后使用分治的思想...

HuiSeKongHuan的博客 545

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU 1007 Quoit Design(平面最小点对)

题记:首先将这n个点按照x从小到大排序,用分治的思想把这些点拆分,使得两边点的数目都是当前点的个数的一半。 S集合分成左集合S1和右集合S2 d记录当前状态下的最小距离 分情况讨论合并时的问题: 1、这个集合只有一个点,返回一个很大的数。(取最小值时会去掉这个数) 2、这个集合有两个点,返回这两个点的距离。然后与d取最小值。 3、这个集合有三个或三个以上的点: (1)所有点都在左集合或者是右集合,...

moyangxian 215

HDU 1007 Quoit Design (分治)

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 56659    Accepted Submission(s): 15034 Problem Description Have you e

Mr_Treeeee的博客 357

hdu 1007 Quoit Design [sort+分治] 寻找最小距离点对

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1007Quoit DesignTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 43752 Accepted Submission(

Tabris的博客 580

hdu 1007 Quoit Design

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10498    Accepted S

codeStone 3253

Hdu-1007 Quoit Design

转自hdu 1007题解 求点集中的最近点对有以下两种方法: 设p1=(x1, y1), p2=(x2, y2), …, pn=(xn, yn)是平面上n个点构成的集合S,设计算法找出集合S中距离最近的点对。 OJ题目:HDU1007http://acm.hdu.edu.cn/showproblem.php?pid=1007 1、蛮力法(适用于点的数目比较小的情况下) 1)算法...

twentyMinutes的博客 299

hdu1007 Quoit Design

首先说一下这题的题意,题意很简单,就是给出平面上若干个点的

欢迎来到大型网络对战闯关类游戏——ACM 609

HDU1007 Quoit Design(分治)

题目链接:hdu1007 题目大意 给定一个整数 n ,下面跟着 n 对二维坐标 (x, y),其中x、y均为实数,表示平面内的 n 个点。问平面内这 n 个点之间的最短距离是多少?输出这个答案的一半。 解题思路 枚举 时间复杂度 O(n2)O(n^2)O(n2),具体做法略。 分治 对于分治的做法我们大致可以分为三个步骤:预处理,分离区间,合并区间。首先我们把平面的点一分为二,然后计算各自的最小距离,回溯后取其中最小后并枚举两个区间一个点在左另一个点在右的情况,计算距离看是否能够更新最小值。 以下是对

小胡同的诗 445

hdu1007-Quoit Design

http://acm.hdu.edu.cn/showproblem.php?pid=1007 #include #include #include #include #include using namespace std ; const int maxn = 1000001 ; const int INF = 1000000001 ; struct Point { double x ,

bo-jwolf的专栏 1145
上一篇: 最长递增序列
下一篇: hdu 3555
顺顺不吃竹笋
博客等级 码龄10年 32粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值