ACM-计算几何之Quoit Design——hdu1007 zoj2107
Quoit Design
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28539 Accepted Submission(s): 7469
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.
by N = 0.
2
0 0
1 1
2
1 1
1 1
3
-1.5 0
0 0
0 1.5
0
0.71
0.00
0.75
pid=1007">hdu 1007
。 zoj 2107/**************************************
***************************************
* Author:Tree *
*From :http://blog.csdn.net/lttree *
* Title : Quoit Design *
*Source: hdu 1007 zoj 2107 *
* Hint : 计算几何——近期点对 *
***************************************
**************************************/
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define N 100001
struct Point
{
double x,y;
}p[N];
int arr[N];
double Min(double a,double b)
{
return a<b?a:b;
}
// 求两点之间的距离
double dis(Point a,Point b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
// 依据点横坐标or纵坐标排序
bool cmp_y( int a,int b)
{
return p[a].y<p[b].y;
}
bool cmp_x( Point a,Point b)
{
return a.x<b.x;
}
// 求近期点对
double close_pair( int l,int r )
{
// 推断两个点和三个点的情况
if( r==l+1 ) return dis( p[l],p[r] );
else if( r==l+2 ) return Min( dis(p[l],p[r]),Min( dis(p[l],p[l+1]),dis(p[l+1],p[r]) ) ); int mid=(l+r)>>1;
double ans=Min(close_pair(l,mid),close_pair(mid+1,r)); int i,j,cnt=0;
// 假设 当前p[i]点 横坐标位于 范围(中点横坐标-ans,中点横坐标+ans)位置内,则记录点的序号
for(i=l; i<=r; ++i)
if( p[i].x>=p[mid].x-ans && p[i].x<=p[mid].x+ans )
arr[cnt++]=i;
// 依照纵坐标由小到大 对于arr数组内点进行排序
sort(arr,arr+cnt,cmp_y);
for(i=0; i<cnt; i++)
for(j=i+1; j<cnt; j++)
{
if(p[arr[j]].y-p[arr[i]].y>=ans) break;
ans=Min(ans,dis(p[arr[i]],p[arr[j]]));
} return ans;
} int main()
{
int i,n;
while( scanf("%d",&n)!=EOF && n)
{
for(i=0;i<n;++i)
scanf("%lf%lf",&p[i].x,&p[i].y);
// 先将全部点依照横坐标由小到大排序
sort(p,p+n,cmp_x);
printf("%.2lf\n",close_pair(0,n-1)/2.0);
}
return 0;
}
ACM-计算几何之Quoit Design——hdu1007 zoj2107的更多相关文章
- Quoit Design(hdu1007)最近点对问题。模版哦!
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU1007 Quoit Design 【分治】
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDU 1007 Quoit Design【计算几何/分治/最近点对】
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU1007 Quoit Design掷环游戏
Quoit Design 看懂题意以后发现就是找平面最近点对间距离除以2. 平面上最近点对是经典的分治,我的解析 直接上代码 #include<bits/stdc++.h> using n ...
- Quoit Design(hdu1007)
---恢复内容开始--- Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- Quoit Design(最近点对+分治)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...
- HDU 1007 Quoit Design(经典最近点对问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...
- HDU 1007 Quoit Design(二分+浮点数精度控制)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
随机推荐
- [JBoss] JNDI与JBossNS
JNDI的作用 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface). 随着分布式应用的发展,远程访问对象访问成为常用的方法.虽然说通过Soc ...
- Random Teams
n participants of the competition were split into m teams in some manner so that each team has at le ...
- perl use base 代替 @ISA
packge Mule; use base ("Horse", "donkey"); # 声明一个超类 它是下面东西的缩写: package Mule; BEG ...
- Expert for SQL Server 诊断系列
Expert for SQL Server 诊断系列 Expert 诊断优化系列------------------锁是个大角色 前面几篇已经陆续从服务器的几个大块讲述了SQL SERVER数据库 ...
- UVA11552------FEWEST FLOPS------区间型的DP
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Maven 实现Struts2注解配置步骤详解
1,pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- Phalcon资源文件管理(Assets Management)
资源文件管理(Assets Management)¶ Phalcon\Assets是一个让开发人员管理静态资源的组件,如管理css,javascript等. Phalcon\Assets\Manage ...
- 能上QQ无法上网
不少网友碰到过或亲身经历过电脑QQ还在登录,并且还能正常聊天,但是却打不开网站网页的情况,而当电脑出现能上qq但是打不开网页是由什么原因引起,我们又该如何解决类似的电脑故障呢. 适用范围及演示工具 适 ...
- 如果一个Object对象可能是集合或者数组那么如何对其进行迭代
需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是集合,包括Collection和Map,也 ...
- CABasicAnimation学习Demo 包含了一些经常使用的动画效果
个人写的一些样例: // // ViewController.m // CABasicAnimationDemo // // Created by haotian on 14-6-13. // Cop ...