题面

题意:二维平面上有很多点,每个点有个权值,现在给你一个点(很多组),权值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. JAVA可能问的几个面试题问题及问题的标准答案

    问题一:你希望工作环境是怎样的? 标准答案:我对环境没有苛求,我会努力适应环境的. 注:此问题是在测试你的求职心态,是以自己为中心还是以工作为中心. 问题二:你觉得自己有哪些缺点? 标准答案:说一些对 ...

  2. BZOJ 3319: 黑白树 树+并查集+未调完+神题

    Code: #include<bits/stdc++.h> #define maxn 1000003 using namespace std; char *p1,*p2,buf[10000 ...

  3. buildroot的make menuconfig配置

    开始对buildroot 编译 [root@xxxxxx /data/sandbox/open_linux/buildroot] #make -j 20 Your Perl installation ...

  4. 分布式系列文章 —— 从 ACID 到 CAP / BASE

    转自:https://mp.weixin.qq.com/s?amp;mid=2652037708&__biz=MzI0NDI0MTgyOA%3D%3D&idx=1&chksm= ...

  5. QBXT Day2

    遭遇[问题描述]你是能看到第一题的 friends呢.—— hjaN座楼房,立于城中 .第i座楼,高度 hi.你需要一开始选择座楼,开始跳楼. 在第 i座楼准备跳需要 ci的花费. 每次可以跳到任何一 ...

  6. [cf 1015f] Bracket Substring (dp+kmp)

    传送门 Solution 设dp方程dp[now][pos][red][fla]表示还有now个位置,pos表示匹配到第几位,red表示左括号数-右括号数,fla表示是否已经是给定串的字串 暴力转移即 ...

  7. cat和cp的神奇用法:制作U盘安装盘

    使用U盘安装debian,U盘的制作方法: 方法一: https://www.debian.org/doc/manuals/debian-handbook/installation.zh-cn.htm ...

  8. 支持移动触摸的jQuery图片Lightbox插件

    简介 这是一款支持移动触摸设备的简洁jQuery图片Lightbox插件.该LightBox插件可以在移动手机和桌面设备中运行,它具有响应式,预加载图片,键盘支持等特点,非常实用.它的特点还有: 响应 ...

  9. Python实现8中常用排序算法

    L = [2,6,4,7,9,1,3,5,8] # 1.插入排序 def insert_sort(List): n = len(List) for i in range(1,n): # 得到索引 j ...

  10. jQuery(UI)常用插件

    jQuery 官方网站:http://jquery.com/ 下载地址:http://jquery.com/download/ 插件地址: http://plugins.jquery.com/ 常用插 ...