简洁好用的KDTree模板
看了好多人的模板以后写的,感觉这个非常优秀,代码短,空间小,特判少
论哨兵节点的作用.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模板相关推荐
- html5网页代码模板简单,简洁蓝色风格HTML5网页模板
简洁蓝色风格HTML5网页模板是一款适合健康医疗类网站模板下载 资源下载此资源下载价格为4D币,请先登录 资源文件列表 codedown123-0818-12/apage.html , 7582 co ...
- 简洁商城系统后台管理模板
简介: 简洁商城系统后台管理模板,简单,大气,全套模板,包括登录.旅游管理.系统管理.信息管理等后台模板页面. 网盘下载地址: http://kekewangLuo.cc/irUA8YyDkwp0 图 ...
- HTML简洁单页网址导航模板
介绍: HTML简洁单页网址导航模板,直接上图,需要的自取 网盘下载地址: http://kekewangLuo.cc/9yNyorrYUK50 图片:
- 简洁大气公司介绍PPT模板
模板介绍 本套简洁大气公司介绍PPT模板,模板编号:P84998,大小10MB,共27页,比例为16:9,由封面.目录.转场页.内容.结尾5个部分构成. 内含青色,蓝色多种配色,精美扁平化风格设计,动 ...
- html编写出现黄色,HTML黄色简洁形式创意展示网页模板代码
模板描述:黄色 简洁形式 创意展示.HTML黄色简洁形式创意展示网页模板代码HTML模板下载 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 51前端 Home Work Blog A ...
- 扁平化简洁工作计划安排PPT模板
模板介绍 本套扁平化简洁工作计划安排PPT模板,模板编号:P35671,大小10MB,共27页,比例为16:9,由封面.目录.转场页.内容.结尾5个部分构成. 内含灰色,红色多种配色,精美扁平化风格设 ...
- 苹果cmsV10影视资源站源码简洁蓝色风格电脑手机模板
我的主题网[第十八套]苹果CMSv10自适应热销款资源站专用多功能视频模板 苹果cmsV10影视资源站源码简洁蓝色风格电脑手机模板 首款苹果cms资源站专用多功能自适应影视模板支持播放测试,可单链接或 ...
- 简洁大气资源站emlog模板
介绍: 模板留白简洁大气,首页ajax加载下一页直接上传到 Emlog模板目录后台选择就可以了,非常简单! 网盘下载地址: http://kekewl.cc/HZhytHQVsdh 图片:
- XeLatex + MacTex 一个简洁快速的个人简历模板及其他合集
为什么使用XeLatex 和MacTex 又到了每年的9月10月的求职高峰季,填简历的时候看到一个非常充实又十分清爽的简历,可惜排版有些瑕疵,应该是word写的,于是自己开始折腾用Latex来制作一个 ...
最新文章
- Apache关掉Etag和Last-Modified的方法
- BCH或将在年底超越ETH
- mysql 5.6 root密码_MySQL 5.6 root 初始密码
- bat 批处理切换到当前脚本所在文件夹
- 从零开始入门 K8s | 可观测性:你的应用健康吗?
- 无法嵌入互操作类型“SHDocVw.ShellWindowsClass”。请改用适用的接口
- Gradle+IDEA使用说明
- Learning Scrapy笔记(五)- Scrapy登录网站
- css hsla和rgba的区别
- mysql主从复制读写分离_MySQL主从复制与读写分离的工作原理
- Python入门必备,Python零基础入门
- ant design pro 实现审核图片盖章功能
- 板材品牌之生态板吊顶好还是桑拿板好
- 通过基因组选择预测杂交水稻的表现(数据挖掘)
- 笔记:RT-Thread Studio 快速上手
- 猫眼电影票房爬取到MySQL中_爬取猫眼电影top100,request、beautifulsoup运用
- matlab解决匀速直线运动,匀速直线运动的意思
- 用了PDCA工作法模板,被领导夸被同事学
- 计算机程序设计c++ 7-2:函数与指针
- linux 非root tomcat,Linux非root用户安装jdk和tomcat