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 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
随机推荐
- 安装rails卡住很慢 出现302 Moved Temporarily
在MAC上安装rails的时候,使用命令$ gem install rails 发现一直没响应,使用$ gem install rails-V命令发现,安装会在中间卡住,出现302 Moved Tem ...
- [Advanced Algorithm] - Exact Change
题目 设计一个收银程序 checkCashRegister(),其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数. ci ...
- express创建第一个web应用
Express 在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs. 这里我们使用ejs模板引擎:(关于ejs的介绍可以先从百科里面了解一个大概)EJS是一个JavaScript模板库, ...
- unittest的case和报告生成方法
#coding=utf-8from appium import webdriverimport unittestimport HTMLTestRunnerclass CaseTest(unittest ...
- Java核心技术读书笔记02
第四章 对象和类 类之间的关系 最常见的三种关系 依赖("uses-a") Order依赖Account类看信息 聚合("has-a") Order包含多个It ...
- lamp平台搭建论坛网站(Discuz论坛)
1. 安装Apache 1) 安装apr [root@www lamp]# yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel -y ...
- Hexo系列(三) 常用命令详解
Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...
- Locally managed (LMT) vs. Dictionary managed (DMT) tablespace
The LMT is implemented by adding the extent management local clause to the tablespace definition syn ...
- MariaDB 10.x 将包含多主复制功能
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/multi_so ...
- nutz_web应用中主页跳转到登录页面的方式
一.前言 web应用开发时,地址栏输入ip+port+appName,通常可以跳转到登录页面.以下便介绍我所知道并且验证过的三种跳转方式. 二.准备工作 需要使用到两个url的处理分别如下: @At( ...