题目描述 Description

Ayu在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下。而七年后的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它。
我们把Ayu生活的小镇看作一个二维平面坐标系,而Ayu会不定时地记起可能在某个点(x,y)(x,y)(x,y)埋下了天使玩偶;或者Ayu会询问你,假如她在(x,y)(x,y)(x,y),那么她离最近的天使玩偶可能埋下的地方有多远。
因为Ayu只会沿着平行坐标轴的方向来行动,所以在这个问题里我们定义两个点之间的距离为dist(A,B)=∣Ax−Bx∣+∣Ay−By∣dist(A,B)=|A_x-B_x|+|A_y-B_y|dist(A,B)=∣Ax​−Bx​∣+∣Ay​−By​∣。其中AxA_xAx​表示点AAA的横坐标,其余类似。

输入 Input

第一行包含两个整数nnn和mmm,在刚开始时,Ayu已经知道有nnn个点可能埋着天使玩偶,接下来Ayu要进行mmm次操作。
接下来nnn行,每行两个非负整数xi,yix_i,y_ixi​,yi​,表示初始nnn个点的坐标。
再接下来mmm行,每行三个非负整数t,xi,yit,x_i,y_it,xi​,yi​。
如果t=1t=1t=1,则表示Ayu又回忆起了一个可能埋着玩偶的点(xi,yi)(x_i,y_i)(xi​,yi​)。
如果t=2t=2t=2,则表示Ayu询问如果她在点(xi,yi)(x_i,y_i)(xi​,yi​),那么在已经回忆出来的点里,离她最近的那个点有多远。

输出 Output

对于每个t=2t=2t=2的询问,在单独的一行内输出该询问的结果。

样例输入 Sample Input

2 3
1 1
2 3
2 1 2
1 3 3
2 4 2
(原题样例输入太大了给换个小的,这是BZOJ2648的样例,一样的…)

样例输出 Sample Output

1
2

这可能是最近更的最后一篇…在没被FFT洗脑之前写点数据结构…
没事别乱立flag这就是下场
很久就听说KDTree了,可是一直没时间写,退役就有时间了所以就敲了一发…
真心感觉这不是数据结构而是计算几何
先按xxx维建,找出应该处于中间的节点放到中间,这里用到了一个强大的函数“nth_element”(在algorithm里),然后递归左右两边按yyy维建树,这样每次颠倒xxx与yyy可以按照矩形范围建好树。
加点也简单,直接按照线段树方式加即可…(小的往左,大的往右)
查询需要一个估价函数,记录一个节点范围,即xmax,xmin,ymax,yminx_{max},x_{min},y_{max},y_{min}xmax​,xmin​,ymax​,ymin​。查询时,计算查询点到子树的范围的差距,按照小范围优先的原则递归搜索左右子树,并更新答案。
关于KDTree的时间问题,有说是O(nlog⁡22n)O(n\log_2^2n)O(nlog22​n)的,还有说估价函数不确定,是O(nlog⁡2n∼nn)O(n\log_2 n \sim n\sqrt n)O(nlog2​n∼nn​)的玄学时间的…
这个问题有待研究,可是BZOJ第二页应该可以说挺快的吧…
Code
还可以用CDQ分治,百度一大片自行搜索…

[KDTree] [BZOJ2716] [Violet 3] 天使玩偶相关推荐

  1. bzoj2716 [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2160  Solved: 936 [Submit][Sta ...

  2. bzoj2716 [Violet 3]天使玩偶(KDtree)

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

  3. bzoj2716 [Violet 3]天使玩偶(CDQ分治)

    前言:我们又回到了这道题,不过这次我们选择一个常数小一点的算法:CDQ Description Input Output Sample Input 100 100 81 23 27 16 52 58 ...

  4. BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶

    BZOJ2648: SJY摆棋子 BZOJ2716: [Violet 3]天使玩偶 BZOJ氪金无极限... 其实这两道是同一题. 附上2648的题面: Description 这天,SJY显得无聊. ...

  5. bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree

    2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 Time Limit: 20 Sec  Memory Limit: 128 MB Description 这天,S ...

  6. BZOJ 2716 Violet 3 天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2145  Solved: 928 [Submit][Sta ...

  7. 【BZOJ 2716/2648】 [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 kd-tree模板题. ①首先依次按照每一维(即先按照 x x,再按照yy,再按照 x x-多维同理)将点存在一棵二叉树中: 先求出以当前维数为关键字的中间点 ...

  8. BZOJ 2716: [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 1473  Solved: 621 [Submit][Sta ...

  9. [BZOJ2716/2648][Violet 3]天使玩偶/SJY摆棋子[KDtree]

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

最新文章

  1. NLP突破性成果 BERT 模型详细解读 bert参数微调
  2. linux企业常用命令必之必会二
  3. Matlab中的图形句柄(转载)
  4. idea 执行java maven,IDEA的run maven方式启动步骤详解
  5. python手机app 授权登录_Appium+unittest+python登录app
  6. js图片懒加载的第二种方式
  7. MySQL复习资料(九)——MySQL-图形化工具使用
  8. SpringBoot之静态资源访问
  9. zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计
  10. Amazon S3 设置对象的生命周期Lifecycle
  11. vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE
  12. css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...
  13. 大屏监控系统实战(7)-后端整合MybatisPlus并暴露服务
  14. jQuery 设计和自定义一个带展开动画效果的导航栏
  15. php7 断言,PHP7.2常用新特性和函数
  16. text——Android下的默认字体详解
  17. 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
  18. 扫描仪 无线 打印服务器,自带扫描仪、还能无线打印,Find X2 Pro实用功能分享...
  19. 分享一个精灵盛典辅助工具挂机方案
  20. android画笔,Android自定义View系列之画笔(一)

热门文章

  1. python合并视频
  2. MATLAB基于多目标算法的冷热电联供型综合能源系统运行优化
  3. Dao层service层controller层mannager层和biz层详解
  4. IC模拟版图工程师高薪进阶之路,三年实现年薪30w+
  5. 好白菜和猪的不解之缘
  6. 极光笔记 | 用 WhatsApp 进行海外用户运营的 N 个理由
  7. 关于CSS的学习内容三
  8. 随手查——Multisim
  9. linux下printf终端打印输出颜色控制
  10. 理解偏差和方差(Bias-Variance)的Tradeoff