HDU 2996 In case of failure [KD树]

  KD树,来源计算几何,在《计算几何-算法与应用》一书中有详细的解释。

  这题是比较裸的KD树模型,要在点集中找到离一个点最近的一个点。其实KD树就是一棵多维平衡二叉树,将多维空间分成很多个部分,查找时能够较快的逼近查找点,从而快速的找到距离某点最近或者较近的点。

  在网上找到了这份模版,简洁高效。

  MARK一下URAL1369,也是一道KD树,目前TLE中。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 #define MAXN 100005
 5 #define INF (1LL<<62)
 6 using namespace std;
 7 typedef long long LL;
 8 struct point{
 9     int x,y;
10 }p[MAXN],p2[MAXN];
11 bool dv[MAXN];
12 bool cmpx(const point& p1,const point& p2){
13     return p1.x<p2.x;
14 }
15 bool cmpy(const point& p1,const point& p2){
16     return p1.y<p2.y;
17 }
18 LL getdis(point p1,point p2){
19     return (LL)(p1.x-p2.x)*(p1.x-p2.x)+(LL)(p1.y-p2.y)*(p1.y-p2.y);
20 }
21 void buildKD(int l,int r,point p[]){
22     if(l==r)return;
23     int mid=(l+r)>>1;
24     //按照坐标范围选择建树轴
25     int minx=min_element(p+l,p+r,cmpx)->x;
26     int miny=min_element(p+l,p+r,cmpy)->y;
27     int maxx=max_element(p+l,p+r,cmpx)->x;
28     int maxy=max_element(p+l,p+r,cmpy)->y;
29     dv[mid]=(maxx-minx>=maxy-miny);
30     //dv[mid]=(step&1);也可以按照层数交替建树,貌似效率略慢
31     nth_element(p+l,p+mid,p+r,dv[mid]?cmpx:cmpy);
32     buildKD(l,mid,p);
33     buildKD(mid+1,r,p);
34 }
35 LL res=0;
36 void find(int l,int r,point a,point p[]){
37     if(l==r)return;
38     int mid=(l+r)>>1;
39     LL dist=getdis(a,p[mid]);
40     if(dist>0)res=min(res,dist);
41     LL d=dv[mid]?(a.x-p[mid].x):(a.y-p[mid].y);
42     int l1=l,l2=mid+1,r1=mid,r2=r;
43     if(d>0)swap(l1,l2),swap(r1,r2);
44     find(l1,r1,a,p);
45     if(d*d<res)find(l2,r2,a,p);
46 }
47 int n,cas;
48 int main(){
49     freopen("test.in","r",stdin);
50     scanf("%d",&cas);
51     while(cas--){
52         scanf("%d",&n);
53         for(int i=0;i<n;i++)
54             scanf("%d%d",&p[i].x,&p[i].y),p2[i]=p[i];
55         buildKD(0,n,p);
56         for(int i=0;i<n;i++){
57             res=INF;
58             find(0,n,p2[i],p);
59             printf("%I64d\n",res);
60         }
61 
62 
63     }
64     return 0;
65 }

 

  

转载于:https://www.cnblogs.com/swm8023/archive/2012/09/04/2670258.html

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

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

相关文章

构建属于你自己的dapr服务发现

作者&#xff1a;李俱顺原文&#xff1a;https://www.4async.com/2021/05/building-your-own-dapr-service-discovery/在上一篇文章中&#xff0c;我其实遗留了一个问题&#xff1a;如何定义dapr的服务发现呢&#xff1f;其实在后面阅读dapr的源码之后也前一篇文章的评论中提到…

python csv文件读取行列_使用Numpy读取CSV文件,并进行行列删除的操作方法

Numpy是Python强大的数据计算和处理模块&#xff0c;其操作数据非常迅速且简单易行。首先读取CSV文件>>> import numpy as np#导入numpy模块>>> tempnp.loadtxt("file.csv",dtypenp.int,delimiter,)可以看到两行代码搞定&#xff0c;看一下temp的内…

java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject

错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法&#xff0c;期间在网上找了很多代码&#xff0c;但是每次在Android模拟器中运行的时候程序都会崩溃&#xff0c;搞得自己都快崩溃了。。。。 查看了一下LogCat中的错误报告&#xff0c;发现是因为java.lang.NoCl…

php 模板替换,使用PHPWord对Word文件做模板替换

因工作需要&#xff0c;使用了版本比较旧的PHPWord项目官方已不见维护更新&#xff0c;上次版本更新是在Fri Jul 8, 2011 at 8:00 AM如果PHP版本>5.3.3&#xff0c;强烈推荐使用PHPOffice/PHPWord这个开源项目本篇针对的为旧版本的PHPWord基本安装问题总结Autoloader自动加载…

服务端和客户端证书各种组合下对访问者(浏览器/中间人)的影响

今天本来想研究下nginx下如果获取SSL指纹&#xff0c;但是环境没有装成功就尝试了下如果不用nginx直接在服务端拿到SSL指纹&#xff0c;没想到从创建自签名证书到如何开启证书&#xff0c;以及服务端证书和客户端证书各种组合校验的测试就花了我很长时间。(注意自签名证书用Rsa…

Android之应用APN、WIFI、GPS定位小例子

转自一个网上项目&#xff0c;由于是例子打包下载&#xff0c;出处不详。例子中自我写入注释。Activity类&#xff1a;package com.maxtech.common;import com.maxtech.common.gps.GpsTask;import com.maxtech.common.gps.GpsTaskCallBack;import com.maxtech.common.gps.GpsTa…

如果科学家封神,会有什么称号?

全世界只有3.14 % 的人关注了数据与算法之美你听说过“天雷真君”吗&#xff1f;你知道“虐猫狂人"吗&#xff1f;其实这两个称号是网友分别送给大科学家富兰克林和薛定谔的。今天让我们看看伟大的科学家们还有一些什么有趣的称号。尺规小王子高斯如来神展傅立叶勾股圣手—…

mac php mcrypt,MacOSX 10.10安装mcrypt详细教程分享

mcrypt 是使用安全技术来交换数据文件加密方法. 这是必需的&#xff0c;例如一些 Magento 的 Web 应用程序,购物车软件或一个 PHP 框架&#xff0c;比如 Laravel. 本教程在 OS X 10.10 Yosemite 经过测试。本指南是真正为用户提供了PHP运行于OSX Yosemite 的5.5.14 版本。其他下…

WPF加载高德地图

WPF开发者QQ群&#xff1a; 340500857 前言 有小伙伴问如何加载高德地图。欢迎转发、分享、点赞&#xff0c;谢谢大家~。 接着上一篇源码中放了我的 BingMap Key 请大家不要滥用&#xff0c;谢谢。也可以自行申请 BingMap Key https://www.bingmapsportal.com/效果预览&#x…

深度学习与机器学习到底什么关系?

最近广州的天气老是变幻无常&#xff0c;前脚还冻得瑟瑟发抖&#xff0c;后脚又开始夏天模式&#xff08;如下图&#xff09;&#xff0c;让小天甚是怀念每天艳阳高照的夏天&#xff0c;虽然热了点但好歹不用担心猝不及防地收到寒风暴雨黄色预警。说到夏天&#xff0c;不得不提…

全选按钮的使用。winfrom程序中,对全选按钮的理解,欢迎拍砖!

最近在做公司项目时&#xff0c;用到了一些单选多选的处理情况。特编辑此文&#xff0c;欢迎批评指正。&#xff08;有图有真相&#xff09; winfrom程序。 首先&#xff0c;需要绑定某些用户&#xff0c;该用于由当前登陆用户获取。 private void BindUser() { …

php 新浪面试题,php程序员面试题(新浪篇)

新浪PHP工程笔试题1. 写一个函数&#xff0c;尽可能高效的&#xff0c;从一个标准 url 里取出文件的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id1 需要取出 php 或 .php2. 在 HTML 语言中&#xff0c;页面头部的 meta 标记可以用来输出文件的编码格式&#xff0c;以…

理工男一般不浪漫,一浪漫便值很多年

今晚是平安夜接下来就是圣诞元旦小木先祝大家幸福、快乐、健康一年一度“最佳”圣诞元旦礼物奖就要发表了中了直男毒的礼物你们挚爱的女朋友可是不要的哦今天小木就大家扒一扒满满直男的礼物是怎样的&#xff01;Part 1“男票送了我一箱木瓜&#xff0c;说是丰胸疗程&#xff0…

C#序列化与反序列化详解

什么是序列化以及如何实现序列化&#xff1f;序列化是通过将对象转换为字节流&#xff0c;从而存储对象或将对象传输到内存&#xff0c;数据库或文件的过程。主要用途是保存对象的状态&#xff0c;包括对象的数据&#xff0c;以便能够在需要是重建对象。反向过程称为 反序列化。…

云计算涉足网游

随着云计算的发展&#xff0c;网游完全无端化指日可待。 互联网从C/S结构慢慢的过渡到B/S结构&#xff0c;网络游戏也从端游慢慢过渡到页游。比起市场上动辄7G、14G大型端游来说&#xff0c;页游实在是一个太过方便的东西。比如不用频繁的更新客户端&#xff0c;如果是安装在了…

php父子遍历,php无限分类父子追溯方法

php 无限分类之父级分类和子分类的追溯方法&#xff0c;代码片段如下&#xff1a;//返回所有的叶子节点public function scanNodeOfTree($result,$fid){$checkexist false;for ($i0; $iif($fid $result[$i][ParentId]){$checkexist true;$arr . $this->scanNodeOfTree($r…

TLS是如何保障数据传输安全(中间人攻击)

前言前段时间和同事讨论HTTPS的工作原理&#xff0c;当时对这块知识原理掌握还是靠以前看了一些博客介绍&#xff0c;深度不够&#xff0c;正好我这位同事是密码学专业毕业的&#xff0c;结合他密码学角度对tls加解密(DH这块)的阐述&#xff0c;让我对这块原理有了更进一步的理…

除了 Python ,这些语言写的机器学习项目也很牛

全世界只有3.14 % 的人关注了数据与算法之美Python 由于本身的易用优势和强大的工具库储备&#xff0c;成为了在人工智能及其它相关科学领域中最常用的语言之一。尤其是在机器学习&#xff0c;已然是各大项目最偏爱的语言。其实除了 Python &#xff0c;也不乏有开发者用其他语…

php 输入值,php-HTML输入值更改

我有一个PHP更新页面,其中显示一个包含数据库值的文本字段.就像这样,它正在工作,现在,我需要将此更新后的值放回数据库中&#xff01;我已经使用过这样的代码,但是它没有更新&#xff1a;$title$_POST[title];$v_id $_GET[v_id];$sql mysql_query("update vehicles set …