题面

题意:二维平面上有很多点,每个点有个权值,现在给你一个点(很多组),权值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的更多相关文章

  1. Hdu-5983 2016ACM/ICPC亚洲区青岛站 B.Pocket Cube 模拟

    题面 题意:给你一个2*2的魔方,给你每个面每个小块的颜色,一共24个,然后问你能否在一步之内还原. 题解:手动在纸上画,推出每种变化对应的置换,显然,一共有6种,而且可以当成3种,(具体哪3种,就是 ...

  2. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  3. HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  5. HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  7. HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)

    Convex Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  8. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  9. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

随机推荐

  1. 安装rails卡住很慢 出现302 Moved Temporarily

    在MAC上安装rails的时候,使用命令$ gem install rails 发现一直没响应,使用$ gem install rails-V命令发现,安装会在中间卡住,出现302 Moved Tem ...

  2. [Advanced Algorithm] - Exact Change

    题目 设计一个收银程序 checkCashRegister(),其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数. ci ...

  3. express创建第一个web应用

    Express 在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs. 这里我们使用ejs模板引擎:(关于ejs的介绍可以先从百科里面了解一个大概)EJS是一个JavaScript模板库, ...

  4. unittest的case和报告生成方法

    #coding=utf-8from appium import webdriverimport unittestimport HTMLTestRunnerclass CaseTest(unittest ...

  5. Java核心技术读书笔记02

    第四章 对象和类 类之间的关系 最常见的三种关系 依赖("uses-a") Order依赖Account类看信息 聚合("has-a") Order包含多个It ...

  6. lamp平台搭建论坛网站(Discuz论坛)

    1. 安装Apache 1) 安装apr [root@www lamp]# yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel -y ...

  7. Hexo系列(三) 常用命令详解

    Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...

  8. Locally managed (LMT) vs. Dictionary managed (DMT) tablespace

    The LMT is implemented by adding the extent management local clause to the tablespace definition syn ...

  9. MariaDB 10.x 将包含多主复制功能

    本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/multi_so ...

  10. nutz_web应用中主页跳转到登录页面的方式

    一.前言 web应用开发时,地址栏输入ip+port+appName,通常可以跳转到登录页面.以下便介绍我所知道并且验证过的三种跳转方式. 二.准备工作 需要使用到两个url的处理分别如下: @At( ...