HDU 1007Quoit Design(最近点问题)

最近点问题:二维平面中有n(n很大)个点,求出距离最近的两个点思路:因为n的值很大,所以暴力和dp都行不通了吧!分治法就挺好的。将区间一半一半的分开,直到分成只有一个点或两个点的时候!对于只有两个点的区间,最小值就是这两个点的距离,只有一个点的区间,最小值就是无穷大。注意还要考虑合并的时候,可能距离最近的两个点,分别在左右两个不同的区间。对于这种情况的处理如下:mid=(ld+rd)/2;ans = min(solve(ld, mid), solve(mid+1, rd));得到两段区间最小值的最小值 从中间向两边寻找,因为我们是按照x坐标排序的,在左区间向左边寻找的时候如果某一个点的x到中间点x的距离大于ans(否则将这样的点保存),那么这个点左边的点就不可能在右区间寻找到相应的点满足两个点的距离小于ans的,那么就结束继续查找(这样算是一种优化) 同理在右区间向右寻找。。。然后对存储的节点按照y坐标进行从小到大的排序。 枚举每两个点寻找最小的距离 
 1 #include<iostream>
 2 #include<cstring> 
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<algorithm>
 6 #define MAX 99999999999999.0
 7 using namespace std;
 8 
 9 struct node{
10     double x, y;
11 }nd[100005], ndx[100005];
12 
13 bool cmp(node a, node b){
14     if(a.x == b.x) return a.y < b.y;
15     return a.x < b.x;
16 }
17 
18 bool cmpy(node a, node b){
19     return a.y < b.y; 
20 }
21 
22 double dist(node a, node b){
23     return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
24 }
25 
26 double solve(int ld, int rd){
27     if(ld == rd) return MAX;
28     if(ld + 1 == rd) return dist(nd[ld], nd[rd]);
29     int mid = (ld+rd)/2;
30     double ans = min(solve(ld, mid), solve(mid+1, rd));
31     int len = 0;
32     for(int i = mid; i>=ld; --i)
33         if(nd[mid].x - nd[i].x <= ans)
34             ndx[len++] = nd[i];
35         else break;
36     for(int i=mid+1; i<=rd; ++i)
37         if(nd[i].x - nd[mid].x <= ans)
38             ndx[len++] = nd[i];
39         else break;
40     
41     sort(ndx, ndx+len, cmpy) ;
42     for(int i=0; i<len-1; ++i)
43         for(int j=i+1; j<len; ++j)
44             if(ndx[j].y - ndx[i].y >= ans) break;//这里做一处优化 
45             else ans = min(ans, dist(ndx[i], ndx[j]));
46     return ans;
47 }
48 
49 int main(){
50     int n; 
51     while(scanf("%d", &n) && n){
52         for(int i=0; i<n; ++i)
53             scanf("%lf%lf", &nd[i].x, &nd[i].y);
54         sort(nd, nd+n, cmp);
55         printf("%.2lf\n", solve(0, n-1)/2.0);
56     }
57     return 0;
58 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/4348418.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页信息上传服务器,Unity 连接网页服务器 获取数据上传数据

usingLitJson;usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Net;usingSystem.Net.Http;usingSystem.Text;usingUnityEngine;usingUnityEngine.Networking;usingUnityEngine.UI;//请求连接//数据类型public classConserver…

Myeclipse 操作数据库

步骤1&#xff1a;通过MyEclipse中的window-》show View-》other 调出。DB浏览器&#xff0c;和 SQL Results 步骤2. 可以右键单击空白处&#xff0c;选择new&#xff0c;创建一个新的DB connection&#xff0c; 或者edit已经存在的DB connection 步骤3&#xff1a;数据库信息填…

媒体服务器协议,媒体服务器介绍(mediactrl架构)

5.1.1MediaCtrl媒体控制草案MediaCtrl是IETF下专门研究和制定媒体服务器控制标准的小组&#xff0c;以SIP和XML为所制定标准的基础。这个工作组的工作包括&#xff1a;定义媒体服务器控制的技术需求说明、框架、控制协议簇和定位/连接协议。5.1.1.1技术需求描述这个技术需求描述…

蓝桥杯 历届试题 带分数

历届试题 带分数 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 100 可以表示为带分数的形式&#xff1a;100 3 69258 / 714。还可以表示为&#xff1a;100 82 3546 / 197。注意特征&#xff1a;带分数中&#xff0c;数字1~9分别出现且只出现一次&…

蓝桥杯 历届试题 剪格子

历届试题 剪格子 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 如下图所示&#xff0c;3 x 3 的格子中填写了一些整数。--*---- |10* 1|52| --****-- |20|30* 1| *******-- | 1| 2| 3| ------ 我们沿着图中的星号线剪开&#xff0c;得到两个部分&#xf…

蓝桥杯 历届试题 危险系数

历届试题 危险系数 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站…

android target unknown and state offline解决办法

没有错&#xff0c;将adb的版本升级一下就好了&#xff01; 下载地址为&#xff1a;http://files.cnblogs.com/files/hujunzheng/adb1.0.32.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4360436.html

Spring3 整合 Hibernate4实现数据库操作(1)

Hibernate知识学习&#xff1a;http://justsee.iteye.com/blog/1061576 注意Hibernate4在开发当中的一些改变 &#xff1a;http://snake-hand.iteye.com/blog/1995592 //首先在web.xml中加入OpenSessionInViewFilter过滤器 <filter> <filter-name>openSessionInV…

s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题

1.新建一个web project 2.首先生成Hibernate Facet 3.Hibernate Facet 安装步骤 4.然后是spring facet安装步骤 5.最后是struts facet 的配置 6.最后的整体布局如下所示 7.在服务器上运行&#xff0c;发现如下错误&#xff1a; 严重: Exception sending context initialized ev…

520爱心表白——C语言入门

520爱心表白——C语言入门 关于爱心表白的代码&#xff0c;网上有很多非常好看而且可以实现颜色变换和立体&#xff0c;动态等效果的代码。但是我入门不久&#xff0c;能力有限。520重要的可能还是在心意我觉得&#xff0c;所以自己写了一个非常简单毫无技术含量爱心代码来表达…

MyEclipse在搭建s2sh时 如何 uninstalled facet

在资源管理器中&#xff1a;找到当前【项目的根目录】&#xff0c;在【.setting】目录中&#xff0c; 找到【org.eclipse.wst.common.project.facet.core.xml】文件。 用【文本编辑器工具】打开&#xff0c;找到&#xff1a; <installed facet"me.hibernate" vers…

s2sh框架搭建(基于spring aop)

对于spring aop 是如何管理事务的&#xff0c;请看一下&#xff1a;http://bbs.csdn.net/topics/290021423 1.applicationContext.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&q…

codeforces B. Pasha and String(贪心)

题意&#xff1a;给定一个长度为len的字符序列&#xff0c;然后是n个整数&#xff0c;对于每一个整数ai&#xff0c; 将字符序列区间为[ai,len-ai1]进行反转。求出经过n次反转之后的序列&#xff01; 1 /*2 思路1&#xff1a;将区间为偶数次的直接去掉&#xff01;对剩下的…

java简单词法分析器(源码下载)

java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4383880.html

java 模拟qq源码

java 模拟qq源码&#xff1a; http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4390307.html

蓝桥杯 算法提高 日期计算

算法提高 日期计算 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述已知2011年11月11日是星期五&#xff0c;问YYYY年MM月DD日是星期几&#xff1f;注意考虑闰年的情况。尤其是逢百年不闰&#xff0c;逢400年闰的情况。 输入格式输入只有一行YYYY MM DD 输出…

java JFileChooser选择文件和保存文件

//文件过滤器import java.io.File;import javax.swing.filechooser.FileFilter;public class MyFilter extends FileFilter{private String[] filterString null;public MyFilter(String[] filStrings){this.filterString filStrings;}public boolean accept(File file){if(f…

指针详解

c语言相比其他高级语言来说,更接近于对计算机硬件的操作,而指针的应用更是为我们对硬件的操作插上了翅膀,所以指针是嵌入式编程不可少的一部分,在一定意义上说,指针是c语言的精髓。 欢迎加入嵌入式学习群:559601187 一、 什么是指针 在计算机中,数据时存放在内存中的,…

反质数问题,求不大于n的最大反质数

反质数&#xff1a;设f(n)表示n个约数的个数&#xff0c;如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数我们都知道对于任意一个数n&#xff0c;都可以用质数乘积的形式表示出来&#xff1a;x p1^k1p2^k2...pn^kn一个数n如果可以表示成 n p1^k1 p2^k2, 那…

c语言之结构

今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 欢迎加入嵌入式学习群&#xff1a;559601187 &#xff08;一&#xff09;结构体&#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续&#xff0c;…