Hdu-5992 2016ACM/ICPC亚洲区青岛站 K.Finding Hotels KDtree
题意:二维平面上有很多点,每个点有个权值,现在给你一个点(很多组),权值v,让你找到权值小于等于v的点中离这个点最近的,相同的输出id小的
题解:很裸的KDtree,但是查询的时候有2个小限制,
1个是要小于等于v,1个是输出最小id
第一个,对每个点判断dis的时候 如果价钱高于v 距离就变为INF 低于v就没有影响
第二个,如果disl或者disr 和当前最近的dis 相等 就继续询问以得到更小的id
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=2e5+;
const ll INF=1e18;
int T,n,m;
struct point
{
ll x[];
int c,id;
}p[N],d;
ll idd,ansid,ans;
ll sqr(ll x) {return x*x;}
int cur;
bool cmp(point a,point b)
{
return a.x[cur]<b.x[cur];
}
void build(int l,int r,int dep)
{
if(l>=r) return;
int mid=(l+r)>>;
cur=dep%;
nth_element(p+l,p+mid,p+r+,cmp);
build(l,mid-,dep+);
build(mid+,r,dep+);
}
ll dis(point a,point b)
{
ll ans=;
for(int i=;i<;++i) ans+=sqr(a.x[i]-b.x[i]);
return ans;
}
ll ff(point x,int l,int r,int dep)
{
int cur=dep%;
if(l>=r) {
if(l==r&&x.c>=p[l].c) {
ll cnt=dis(x,p[l]);
if(p[l].c<=x.c&&(cnt<ans||(cnt==ans&&p[l].id<ansid)))
{
ansid=p[l].id;
ans=cnt;
idd=l;
}
}
return INF;
}
int mid=(l+r)>>;
ll res=dis(x,p[mid]);
if(p[mid].c<=x.c&&(res<ans||(res==ans&&p[mid].id<ansid)))
{
ans=res;ansid=p[mid].id;
idd=mid;
}
ll tmp;
if(x.x[cur]<p[mid].x[cur])
{
tmp=ff(x,l,mid-,dep+);
if(ans>sqr(x.x[cur]-p[mid].x[cur])) ff(x,mid+,r,dep+);
}
else
{
tmp=ff(x,mid+,r,dep+);
if(ans>sqr(x.x[cur]-p[mid].x[cur])) ff(x,l,mid-,dep+);
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=;i<n;++i)
{
scanf("%d%d%d",&p[i].x[],&p[i].x[],&p[i].c);
p[i].id=i;
}
build(,n-,);
while(m--)
{
scanf("%d%d%d",&d.x[],&d.x[],&d.c);
ans=INF;
ff(d,,n-,);
printf("%lld %lld %lld\n",p[idd].x[],p[idd].x[],p[idd].c);
}
}
}
Hdu-5992 2016ACM/ICPC亚洲区青岛站 K.Finding Hotels KDtree的更多相关文章
- Hdu-5983 2016ACM/ICPC亚洲区青岛站 B.Pocket Cube 模拟
题面 题意:给你一个2*2的魔方,给你每个面每个小块的颜色,一共24个,然后问你能否在一步之内还原. 题解:手动在纸上画,推出每种变化对应的置换,显然,一共有6种,而且可以当成3种,(具体哪3种,就是 ...
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)
Counting Cliques Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Relative atomic mass Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)
Detachment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)
Convex Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...
- 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
随机推荐
- C++编译错误fatal error C1004: 发现意外的文件尾
出现这种情况就是类或者结构体的定义后面没有加“;”导致的. 而且这种问题好难排查.
- Boost-QT兼容问题:#define FUSION_HASH #
使用原始的MSVC10+QT48很长时间,需要把PCL升级到新的版本,不再使用自行编译的PCL1.7.2版本. 在使用MSVC2012的时候,使用MSVC12-的PCL1.8.0版本,出现了一个不大不 ...
- 基于神经网络的混合计算(DNC)-Hybrid computing using a NN with dynamic external memory
前言: DNC可以称为NTM的进一步发展,希望先看看这篇译文,关于NTM的译文:人工机器-NTM-Neutral Turing Machine 基于神经网络的混合计算 Hybrid computing ...
- 使用css设置border从中间向两边的颜色渐进效果
1.效果图,设置目录的右框线渐进效果 2.代码 .rightCont>div:nth-child(1){ width: 370px; height: 100%; border-right: 2p ...
- 【剑指Offer】44、反转单词序列
题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&qu ...
- SQL第三节课
常用函数 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x ...
- MySQL中的注释符号的使用
前言 在学习MySQL的过程中,因为目前接触的语法简单,所以实在没有想到过加入注释.在写博客使用Markdown时,突然想用注释语句,所以便百度了一下,引用了这一篇转载博客. MySQL中的注释符号有 ...
- Idea 类注释和方法注释
类注释 先打开Settings > Editor > File and Code Templates Includes Includes File Header 再随机新建个类就有类注释 ...
- 【hihocoder 1475】 数组分拆
[题目链接]:http://hihocoder.com/problemset/problem/1475 [题意] _< [题解] /* 别人的题解 首先对于每个位置预处理数组的前缀和,即s[i] ...
- dubbo-dubboAdmin安装(一)
简介 Dubbo是什么? dubbo是阿里开源的分布式服务治理框架,对服务的负载均衡,权重,监控,路由规则,禁用启用的管理,以及服务的自动注册和发现 分布式架构下面临问题 在分布式架构下,我们会将一个 ...