Quoit Design

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

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
 
 
题意:找任意两点之间距离最短的输出!!!
方法:模版题,最近点对问题。                            我又多了份模版。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define Max(x,y) (x)>(y)?(x):(y)
struct Q
{
double x, y;
} q[], sl[], sr[]; int cntl, cntr, lm, rm; double ans;
int cmp(const void*p1, const void*p2)
{
struct Q*a1=(struct Q*)p1;
struct Q*a2=(struct Q*)p2;
if (a1->x<a2->x)return -;
else if (a1->x==a2->x)return ;
else return ;
}
double CalDis(double x1, double y1, double x2, double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
void MinDis(int l, int r)
{
if (l==r) return;
double dis;
if (l+==r)
{
dis=CalDis(q[l].x,q[l].y,q[r].x,q[r].y);
if (ans>dis) ans=dis;
return;
}
int mid=(l+r)>>, i, j;
MinDis(l,mid);
MinDis(mid+,r);
lm=mid+-;
if (lm<l) lm=l;
rm=mid+;
if (rm>r) rm=r;
cntl=cntr=;
for (i=mid; i>=lm; i--)
{
if (q[mid+].x-q[i].x>=ans)break;
sl[++cntl]=q[i];
}
for (i=mid+; i<=rm; i++)
{
if (q[i].x-q[mid].x>=ans)break; sr[++cntr]=q[i];
}
for (i=; i<=cntl; i++)
for (j=; j<=cntr; j++)
{
dis=CalDis(sl[i].x,sl[i].y,sr[j].x,sr[j].y);
if (dis<ans) ans=dis;
}
}
int main()
{
int n, i;
while (scanf("%d",&n)==&&n)
{
for (i=; i<=n; i++)
scanf("%lf%lf", &q[i].x,&q[i].y);
qsort(q+,n,sizeof(struct Q),cmp);
ans=CalDis(q[].x,q[].y,q[].x,q[].y);
MinDis(,n);
printf("%.2lf\n",ans/2.0);
}
return ;
}

Quoit Design(hdu1007)最近点对问题。模版哦!的更多相关文章

  1. Quoit Design(最近点对+分治)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...

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

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

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

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

  4. HDOJ-1007 Quoit Design(最近点对问题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 给出n个玩具(抽象为点)的坐标 求套圈的半径 要求最多只能套到一个玩具 实际就是要求最近的两个坐标的距离 ...

  5. 【HDOJ】P1007 Quoit Design (最近点对)

    题目意思很简单,意思就是求一个图上最近点对. 具体思想就是二分法,这里就不做介绍,相信大家都会明白的,在这里我说明一下如何进行拼合. 具体证明一下为什么只需要检查6个点 首先,假设当前左侧和右侧的最小 ...

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

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

  7. ZOJ 2017 Quoit Design 经典分治!!! 最近点对问题

    Quoit Design Time Limit: 5 Seconds      Memory Limit: 32768 KB Have you ever played quoit in a playg ...

  8. HDU 1007 Quoit Design(经典最近点对问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...

  9. hdu 1007 Quoit Design (最近点对问题)

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

随机推荐

  1. 5. ASP.NET MVC 中的Areas【区域】是什么

    [PS返回上一篇:-->4.ASP.NET MVC 5.0 视图之模型绑定] 从ASP.NET MVC 2.0开始,微软就提供了一个新特性:Areas[区域].Areas仅仅是用来将大型程序拆分 ...

  2. JavaScript 知识

    1. js中this表示当前标签,获取当前标签内的属性,示例如下: var user_id = $(this).attr("data-user-id"); 2.   * js中va ...

  3. 《Python自动化运维之路》 系统基础信息模块(一)

    系统性能收集模块Psutil 目录: 系统性能信息模块psutil 系统性能信息模块psutil psutil能够轻松实现获取系统运行的进程和系统利用率包括(CPU,内存,磁盘 和网络)等.主要用于系 ...

  4. 小猴打架(luogu4430)(数论+生成树计数)

    一开始森林里面有\(N\)只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过\(N-1\)次打架之后,整个森林的小猴 ...

  5. CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】

    〇.背景 参考了几篇文章,总结成 图解 + 注释 方便以后查阅. 参考资料: 1.https://www.zhihu.com/question/19582041 2.https://segmentfa ...

  6. 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单

    1. 先解压 2. maven编译安装.(注意虚拟机采用nat网络模式,需要联网) mvn -Prelease-all -DskipTests clean install -U 启动nameser节点 ...

  7. 改变IIS的Framework版本

    Changing the Framework version requires a restart of the W3SVC service. Alternatively, you can chang ...

  8. [Umbraco] 自定义DataType中Data Editor Setting Type

    上一篇介绍了在定义Document Type中的属性时用到的Data Type,当使用dropdown list如何调用外部数据源,可以根据提供的数据连接字符串,sql语句就能实现你想要显示的数据. ...

  9. Chapter 2 Open Book——13

    "People in this town," he muttered. "Dr. Cullen is a brilliant surgeon who could prob ...

  10. Hibernate的执行流程和集合的映射关系

    Hibernate的执行流程 集合映射 准被hibernate的运行环境 配置hibernate.cfg.xml主配置文件 1.Set集合 写User.java类 package com.gqx.co ...