KDtree干这个复杂度是不对的,重构不一定有作用

解释一下的话,因为复杂度是跟size相关的,所以重构作用不大,KDtree在查询最近点对中的作用仅仅是剪枝,可以构造数据使得他遍历O(n)个节点

hack kdtree

(上面这个是按照洛谷数据范围 n,m 3e5造的

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;//1e9çš„è¯ dis会爆intnull->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/10264134.html

[BZOJ2716/2648][Violet 3]天使玩偶/SJY摆棋子[KDtree]相关推荐

  1. 天使玩偶/SJY摆棋子

    P4169 [Violet]天使玩偶/SJY摆棋子 CDQ分治的题目. 我们发现题目要我们求的\(|A_x-B_x|+|A_y-B_y|\)的绝对值号比较恶心. 试想一下怎么去掉 如果所有的点都在我们 ...

  2. P4169 [Violet]天使玩偶/SJY摆棋子 [CDQ分治]

    天使玩偶天使玩偶天使玩偶 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 ...

  3. P4169 [Violet]天使玩偶/SJY摆棋子(CDQ分治、暴力)

    解析 之前用KDtree做的一道题 由于懒不想再码一遍了 考虑CDQ分治 关键就是如何拿掉绝对值 如果只维护左下角的,显然就是一个经典的三维偏序问题了 但是本题不一定在左下角,也可能在左上.右下.右上 ...

  4. [Luogu4169][Violet]天使玩偶/SJY摆棋子

    luogu 题意 一个平面上有\(n\)个点,\(m\)次操作,每次新增一个点,或者是询问离某个点最近的点的距离.这里的距离是曼哈顿距离. \(n,m\le3*10^5\) sol 写一发\(CDQ\ ...

  5. [Violet]天使玩偶/SJY摆棋子

    传送门 题目大意就是先给定n个点,然后m个操作,每次添加一个点或者查询离一个点最近的一个点是哪个点. 因为要求的是曼哈顿距离,所以我们先把式子转化一下,就是\((x_i + y_i) - (x_j + ...

  6. [Luogu4169] [Violet]天使玩偶/SJY摆棋子 [cdq分治/k-d tree]

    [Link\frak{Link}Link] 考虑用 cdq 分治解决? 显然依旧分成修改跟查询,考虑一维排序二维cdq?啊但是那显然不太对,cdq能解决三维偏序, 但是她不能解决最近点对啊.平面最近点 ...

  7. 题解 洛谷 P4169 [Violet]天使玩偶/SJY摆棋子【CDQ分治】

    题目链接 题意:平面上原有一些点,支持动态加点,动态查询与某个点曼哈顿距离最小的点的距离. 这题据说是有 KD-Tree 和 CDQ 分治两种做法,又据说 KDT 会被卡,于是我采用 CDQ (其实是 ...

  8. 【洛谷P4169】天使玩偶/SJY摆棋子【CDQ分治】

    传送门 题意:动态加点,给定点询问曼哈顿距离最近的点 N,M≤3e5,x,y≤1e6N,M \leq 3e5,x,y \leq 1e6N,M≤3e5,x,y≤1e6 经(kan)过(le)分(ti)析 ...

  9. P4169-[Violet]天使玩偶/SJY摆棋子【CDQ分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P4169 题目大意 nnn个点,然后每次操作 加一个新的点 询问一个点更近的点 解题思路 定义tit_iti​表示第 ...

最新文章

  1. Python:数据集成
  2. 公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥
  3. 使用 Redis 如何实现延迟队列?
  4. 采用开源技术的好处_采用开源的6个技巧
  5. LeetCode从读题到自闭:204. 计数质数
  6. 【三维路径规划】基于matlab粒子群算法无人机山地三维路径规划【含Matlab源码 1831期】
  7. 小米Android OS特别高,干翻小米,最强定制安卓系统诞生?Color OS11表现如何
  8. Linux安装Diamond软件,1.1 Linux下安装diamond
  9. matlab宝典pdf,《MATLAB 宝典(第4版)》---- 优化.pdf
  10. 《全面软件质量管理》核心观点摘录
  11. ps隐藏路径快捷键和PS隐藏路径的三种方法
  12. TKG 1.5.1 的 BYOH 集群部署
  13. IE浏览器请求打开谷歌浏览器
  14. source-map
  15. 【cocos2d游戏开发实战】一款射击类小游戏《Zombie Age》的开发(一)
  16. 彩色图像增强opencv
  17. 网店版重生系列:回头看Jboss配置项CatchSystemOut、Java2ClassLoadingCompliance、UseJBossWebLoader
  18. 【正点原子MP157连载】第二十四章 设备树下的LED驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
  19. [ XSS-labs通关宝典 ] xss-labs 通关宝典之 less1 - less5
  20. 企业内部邮箱有哪些好用,怎么注册申请公司内部邮箱

热门文章

  1. 【有三说图像】边缘检测(上)
  2. 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
  3. 【模型解读】从“局部连接”回到“全连接”的神经网络
  4. 2022年全球及中国集电环行业发展格局与十四五供需现状分析报告
  5. lazada开店平台费用都有哪些,产品如何来做定价?
  6. Android NFC 开发实例
  7. 获取局域网内服务器信息,使用Java代码获取服务器性能信息及局域网内主机名.pdf...
  8. json里面返回模板输出的html,在JSON响应中返回完整页面的HTML而不是字符串输出...
  9. HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)
  10. iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用