hdu-5992 Finding Hotels(kd-tree)
题目链接:
Finding Hotels
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 102400/102400 K (Java/Others)
#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int maxn=2e5+20;
const LL inf=1e18; template<class T> void read(T&num) {
char CH; bool F=false;
for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar());
for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar());
F && (num=-num);
}
int stk[70], tp;
template<class T> inline void print(T p) {
if(!p) { puts("0"); return; }
while(p) stk[++ tp] = p%10, p/=10;
while(tp) putchar(stk[tp--] + '0');
putchar('\n');
}
int n,m,now,ansid;
LL ansdis,minp[maxn];
struct node
{
LL pos[3],pri;
int id;
}po[maxn],op;
int cmp(node a,node b){return a.pos[now]<b.pos[now];}
void build(int L,int R,int dep,int fa)
{
if(L>R)return ;
int mid=(L+R)>>1;
now=dep;
nth_element(po+L,po+mid,po+R+1,cmp);
minp[mid]=po[mid].pri;
build(L,mid-1,3-dep,mid);build(mid+1,R,3-dep,mid);
minp[fa]=min(minp[fa],minp[mid]);
}
inline LL get_dis(LL tep){return tep*tep;}
void query(int L,int R,int dep)
{
if(L>R)return ;
int mid=(L+R)>>1;
if(minp[mid]>op.pri)return ;
LL dis=get_dis(po[mid].pos[1]-op.pos[1])+get_dis(po[mid].pos[2]-op.pos[2]);
if(op.pri>=po[mid].pri)
{
if(dis<ansdis)ansdis=dis,ansid=mid;
else if(dis==ansdis&&po[mid].id<po[ansid].id)ansid=mid;
}
LL tep=get_dis(po[mid].pos[dep]-op.pos[dep]);
if(op.pos[dep]<=po[mid].pos[dep])
{
query(L,mid-1,3-dep);
if(tep<=ansdis)query(mid+1,R,3-dep);
}
else
{
query(mid+1,R,3-dep);
if(tep<=ansdis)query(L,mid-1,3-dep);
}
}
int main()
{
int T;
read(T);
while(T--)
{
read(n);read(m);
for(int i=1;i<=n;i++)
{
po[i].id=i;
for(int j=1;j<=2;j++)read(po[i].pos[j]);
read(po[i].pri);
}
build(1,n,1,0);
while(m--)
{
ansdis=inf;
read(op.pos[1]);read(op.pos[2]);read(op.pri);
query(1,n,1);
printf("%lld %lld %lld\n",po[ansid].pos[1],po[ansid].pos[2],po[ansid].pri);
}
}
return 0;
}
hdu-5992 Finding Hotels(kd-tree)的更多相关文章
- HDU 5992 Finding Hotels(KD树)题解
题意:n家旅店,每个旅店都有坐标x,y,每晚价钱z,m个客人,坐标x,y,钱c,问你每个客人最近且能住进去(非花最少钱)的旅店,一样近的选排名靠前的. 思路:KD树模板题 代码: #include&l ...
- Finding Hotels
Finding Hotels http://acm.hdu.edu.cn/showproblem.php?pid=5992 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU5992 - Finding Hotels
原题链接 Description 给出个二维平面上的点,每个点有权值.次询问,求所有权值小于等于的点中,距离坐标的欧几里得距离最小的点.如果有多个满足条件的点,输出最靠前的一个. Solution 拿 ...
- AOJ DSL_2_C Range Search (kD Tree)
Range Search (kD Tree) The range search problem consists of a set of attributed records S to determi ...
- k-d tree 学习笔记
以下是一些奇怪的链接有兴趣的可以看看: https://blog.sengxian.com/algorithms/k-dimensional-tree http://zgjkt.blog.uoj.ac ...
- 【BZOJ-2648&2716】SJY摆棋子&天使玩偶 KD Tree
2648: SJY摆棋子 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2459 Solved: 834[Submit][Status][Discu ...
- K-D Tree
这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...
- K-D Tree题目泛做(CXJ第二轮)
题目1: BZOJ 2716 题目大意:给出N个二维平面上的点,M个操作,分为插入一个新点和询问到一个点最近点的Manhatan距离是多少. 算法讨论: K-D Tree 裸题,有插入操作. #inc ...
- k-d Tree in TripAdvisor
Today, TripAdvisor held a tech talk in Columbia University. The topic is about k-d Tree implemented ...
随机推荐
- Xamarin对Visual Studio用户免费 Xamarin SDK将开源
在 Build 2016开发者大会上,微软宣布它上个月收购的C#和.NET移动开发工具Xamarin对所有Visual Studio用户免费.所有Visual Studio版本涵盖了从免费的社区版到企 ...
- 各种类型转换为字符串类型(ToString())
更详细请参考:http://blog.csdn.net/wanzhuan2010/article/details/8478904 // C 货币 2.5.ToString("C") ...
- python基础之异常处理
Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...
- 使用adagio包解决背包问题
背包问题(Knapsack problem) 背包问题(Knapsack problem)是一种组合优化的多项式复杂程度的非确定性问题(NP问题).问题可以描述为:给定一组物品,每种物品都有自己的重量 ...
- 十一个行为模式之命令模式(Command Pattern)
定义: 将一个请求封装成对象,使得请求发送者和请求接受者之间相互隔离,消除两者之间的耦合.引入命令类,使得不同请求对客户参数化,并且可以对命令添加附件操作,如:排队.撤销.日志.组合等. 结构图: C ...
- Java基础学习 -- 异常
当异常发生时,原本要接着执行的代码不再执行,转而让其他部分的代码来处理.如果没有代码负责处理,控制台会报告异常. 异常出现时的执行机制: 异常机制最大的好处是:清晰地分开了 正常的业务逻辑 和 遇到情 ...
- js--找字符串中出现最多的字符
在一个字符串中,如 'zhaochucichuzuiduodezifu',我们要找出出现最多的字符.本文章将详细说明方法思路. 先介绍两个string对象中的两个方法:indexOf()和charAt ...
- vs2012使用64位IIS EXPRESS调试
使用Visual Studio 2012开发网站或web应用程序时,可以使用两种web server.自带的development server和IIS EXPRESS.development ser ...
- 【翻译】理念:无冲突的扩展本地DOM原型
菜鸟翻译,望大家多多指正哈 原文:http://lea.verou.me/2015/04/idea-extending-native-dom-prototypes-without-collisions ...
- jQuery基础_4
dom对象就是jquery对象的数组组成部分jquery对象和dom对象的转化jquery对象-->dom对象$()[下标]dom对象-->jquery对象$(dom对象) jquery框 ...