博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
p2093 [国家集训队]JZPFAR
阅读量:6820 次
发布时间:2019-06-26

本文共 1724 字,大约阅读时间需要 5 分钟。

分析

首先给大家推荐一个非常好的KDTree笔记

此题就是y9ong优先队列维护距离最远的k个,最后输出队首元素即可

估价函数就是max和min两点到

询问点的最远距离

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define int long longconst int inf = 1e18;struct kd { int d[2],mx[2],mn[2],le,ri,id;};kd t[300100],now;int n,m,root,wh;inline bool operator < (kd a,kd b){ return a.d[wh]
b.d||((a.d==b.d)&&(a.id
>1; x=mid; nth_element(t+le,t+x,t+ri+1); for(int i=0;i<2;i++) t[x].mx[i]=t[x].mn[i]=t[x].d[i]; if(le
x)build(t[x].ri,mid+1,ri,wwh^1); up(x);}priority_queue
q;inline int getd(kd a,kd b){ return (a.d[0]-b.d[0])*(a.d[0]-b.d[0])+(a.d[1]-b.d[1])*(a.d[1]-b.d[1]);}inline int calc(int x){ if(!x)return -inf; int res=0; for(int i=0;i<2;i++) res+=max((t[x].mx[i]-now.d[i])*(t[x].mx[i]-now.d[i]),(t[x].mn[i]-now.d[i])*(t[x].mn[i]-now.d[i])); return res;}inline void qurey(int x){ if(!x)return; int dl=calc(t[x].le),dr=calc(t[x].ri),d=getd(t[x],now); if(d>q.top().d||(d==q.top().d&&t[x].id
dr){ if(dl>=q.top().d)qurey(t[x].le); if(dr>=q.top().d)qurey(t[x].ri); }else { if(dr>=q.top().d)qurey(t[x].ri); if(dl>=q.top().d)qurey(t[x].le); }}signed main(){ int i,j,k; t[0].mn[0]=t[0].mn[1]=inf; t[0].mx[0]=t[0].mx[1]=-inf; scanf("%lld",&n); for(i=1;i<=n;i++){ scanf("%lld%lld",&t[i].d[0],&t[i].d[1]); t[i].id=i; } build(root,1,n,1); scanf("%lld",&m); for(i=1;i<=m;i++){ while(!q.empty())q.pop(); scanf("%lld%lld%lld",&now.d[0],&now.d[1],&k); for(j=1;j<=k;j++)q.push((node){-1,-1}); qurey(root); printf("%lld\n",q.top().id); } return 0;}

转载于:https://www.cnblogs.com/yzxverygood/p/10562702.html

你可能感兴趣的文章
简单的安卓应用授权认证(JNI)
查看>>
查看硬盘读取速率
查看>>
把匹配的小写转换成大写(\U、\u)
查看>>
【Android网络开发の5】Android中的网络数据下载
查看>>
linux终端使用python的matplotlib模块画图出现“could not open display”问题解决
查看>>
9月国内浏览器市场份额大战:IE份额上升至48.45%
查看>>
Tapestry 教程(五)实现Hi-Lo猜谜游戏
查看>>
2015年12月国内网民地域分布12强:湖北跻身上榜
查看>>
mysql-5.6安装
查看>>
LNMP环境搭建 Ubuntu篇
查看>>
设置低版本VDA注册高版本DDC
查看>>
multi-process script for ping host
查看>>
云数据库SQL Server 2008 R2版推出OSS版本数据上云
查看>>
Android 侵权案下周复审
查看>>
shell基础知识;
查看>>
RocketMQ源码分析之RocketMQ事务消息实现原理中篇----事务消息状态回查
查看>>
shell 中如何输出 n 个连续字符
查看>>
Bootstrap V4 自学开始!
查看>>
技术博客2014年4月份头条记录
查看>>
聚合国内外主流广告平台|开发者服务-KeyMob移动广告聚合平台
查看>>