看了好多人的模板以后写的,感觉这个非常优秀,代码短,空间小,特判少

论哨兵节点的作用.jpg

下面是BZOJ2716/2648的代码

int n, m, x, y, now, ans, op, cnt, d[2];
struct Node {int Min[2], Max[2], d[2];Node *ls, *rs;Node (const pii &a, Node *b) {Min[0] = Max[0] = d[0] = a.fi;Max[1] = Min[1] = d[1] = a.se;ls = rs = b;}Node () {}inline void pushup() {lop0(i, 2) Min[i] = min(d[i], min(ls->Min[i], rs->Min[i])), Max[i] = max(d[i], max(ls->Max[i], rs->Max[i]));}inline bool operator < (const Node &rhs) const {return d[now] < rhs.d[now];}
} S[1300005], *null = S, *root, *root1;
inline void init() {null->Min[0] = null->Min[1] = 1e7, null->Max[0] = null->Max[1] = -1e7;null->ls = null->rs = null;root1 = root = null;
}
inline Node *build(int l, int r) {if (l > r) return null;nth_element(S+l, S+mid, S+r+1);Node *cur = &S[mid];now ^= 1;cur->ls = build(l, mid-1), cur->rs = build(mid+1, r);return cur->pushup(), cur;
}
inline void insert(Node *&cur, int *d, bool now) {if (cur == null) {cur = &(S[++cnt] = Node(mp(d[0],d[1]), null));return ;}insert(d[now] >= cur->d[now] ? cur->rs : cur->ls, d, !now);cur->pushup();
}inline int dis(Node *cur, const pii &a) {return max(0, a.se - cur->Max[1]) + max(0, a.fi - cur->Max[0]) + max(0, cur->Min[0] - a.fi) + max(0, cur->Min[1] - a.se);
}
inline void query(Node *cur, const pii &a) {chmin(ans, abs(cur->d[0] - a.fi) + abs(cur->d[1] - a.se));int disl = dis(cur->ls, a), disr = dis(cur->rs, a);if (disl < disr) {if (disl < ans) query(cur->ls, a);if (disr < ans) query(cur->rs, a);}else {if (disr < ans) query(cur->rs, a);if (disl < ans) query(cur->ls, a);}
}int main() {init();in, cnt, m;lop1(i, cnt) {in, x, y;S[i] = Node(mp(x, y), null);}root = build(1, cnt);while (m--) { in, op, x, y;if (op == 1) {d[0] = x, d[1] = y;insert(root, d, 0);}else {ans = inft;query(root, mp(x, y));out, ans, '\n';}} return 0;
}

转载于:https://www.cnblogs.com/storz/p/10264173.html

简洁好用的KDTree模板相关推荐

  1. html5网页代码模板简单,简洁蓝色风格HTML5网页模板

    简洁蓝色风格HTML5网页模板是一款适合健康医疗类网站模板下载 资源下载此资源下载价格为4D币,请先登录 资源文件列表 codedown123-0818-12/apage.html , 7582 co ...

  2. 简洁商城系统后台管理模板

    简介: 简洁商城系统后台管理模板,简单,大气,全套模板,包括登录.旅游管理.系统管理.信息管理等后台模板页面. 网盘下载地址: http://kekewangLuo.cc/irUA8YyDkwp0 图 ...

  3. HTML简洁单页网址导航模板

    介绍: HTML简洁单页网址导航模板,直接上图,需要的自取 网盘下载地址: http://kekewangLuo.cc/9yNyorrYUK50 图片:

  4. 简洁大气公司介绍PPT模板

    模板介绍 本套简洁大气公司介绍PPT模板,模板编号:P84998,大小10MB,共27页,比例为16:9,由封面.目录.转场页.内容.结尾5个部分构成. 内含青色,蓝色多种配色,精美扁平化风格设计,动 ...

  5. html编写出现黄色,HTML黄色简洁形式创意展示网页模板代码

    模板描述:黄色 简洁形式 创意展示.HTML黄色简洁形式创意展示网页模板代码HTML模板下载 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 51前端 Home Work Blog A ...

  6. 扁平化简洁工作计划安排PPT模板

    模板介绍 本套扁平化简洁工作计划安排PPT模板,模板编号:P35671,大小10MB,共27页,比例为16:9,由封面.目录.转场页.内容.结尾5个部分构成. 内含灰色,红色多种配色,精美扁平化风格设 ...

  7. 苹果cmsV10影视资源站源码简洁蓝色风格电脑手机模板

    我的主题网[第十八套]苹果CMSv10自适应热销款资源站专用多功能视频模板 苹果cmsV10影视资源站源码简洁蓝色风格电脑手机模板 首款苹果cms资源站专用多功能自适应影视模板支持播放测试,可单链接或 ...

  8. 简洁大气资源站emlog模板

    介绍: 模板留白简洁大气,首页ajax加载下一页直接上传到 Emlog模板目录后台选择就可以了,非常简单! 网盘下载地址: http://kekewl.cc/HZhytHQVsdh 图片:

  9. XeLatex + MacTex 一个简洁快速的个人简历模板及其他合集

    为什么使用XeLatex 和MacTex 又到了每年的9月10月的求职高峰季,填简历的时候看到一个非常充实又十分清爽的简历,可惜排版有些瑕疵,应该是word写的,于是自己开始折腾用Latex来制作一个 ...

最新文章

  1. Apache关掉Etag和Last-Modified的方法
  2. BCH或将在年底超越ETH
  3. mysql 5.6 root密码_MySQL 5.6 root 初始密码
  4. bat 批处理切换到当前脚本所在文件夹
  5. 从零开始入门 K8s | 可观测性:你的应用健康吗?
  6. 无法嵌入互操作类型“SHDocVw.ShellWindowsClass”。请改用适用的接口
  7. Gradle+IDEA使用说明
  8. Learning Scrapy笔记(五)- Scrapy登录网站
  9. css hsla和rgba的区别
  10. mysql主从复制读写分离_MySQL主从复制与读写分离的工作原理
  11. Python入门必备,Python零基础入门
  12. ant design pro 实现审核图片盖章功能
  13. 板材品牌之生态板吊顶好还是桑拿板好
  14. 通过基因组选择预测杂交水稻的表现(数据挖掘)
  15. 笔记:RT-Thread Studio 快速上手
  16. 猫眼电影票房爬取到MySQL中_爬取猫眼电影top100,request、beautifulsoup运用
  17. matlab解决匀速直线运动,匀速直线运动的意思
  18. 用了PDCA工作法模板,被领导夸被同事学
  19. 计算机程序设计c++ 7-2:函数与指针
  20. linux 非root tomcat,Linux非root用户安装jdk和tomcat

热门文章

  1. html5手机端的点击弹出侧边滑动菜单代码
  2. MySQL-5.5.28编译安装
  3. 用UML做好系统分析
  4. Spring IOC 之 加载 Bean
  5. 操作系统实验之作业调度算法
  6. Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用
  7. 3个CCIE对一个工程师的面试题(远去之路无比艰辛啊!)
  8. 昨天又帮爸DIY了一台工作电脑
  9. 常玩手机会导致手指残疾? 专家称没依据
  10. Exchange 2007邮件服务器