[KDTree] [BZOJ2716] [Violet 3] 天使玩偶
题目描述 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(nlog22n)O(n\log_2^2n)O(nlog22n)的,还有说估价函数不确定,是O(nlog2n∼nn)O(n\log_2 n \sim n\sqrt n)O(nlog2n∼nn)的玄学时间的…
这个问题有待研究,可是BZOJ第二页应该可以说挺快的吧…
Code
还可以用CDQ分治,百度一大片自行搜索…
[KDTree] [BZOJ2716] [Violet 3] 天使玩偶相关推荐
- bzoj2716 [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 2160 Solved: 936 [Submit][Sta ...
- bzoj2716 [Violet 3]天使玩偶(KDtree)
题目描述 Ayu在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把Ayu生活的小镇看作 ...
- bzoj2716 [Violet 3]天使玩偶(CDQ分治)
前言:我们又回到了这道题,不过这次我们选择一个常数小一点的算法:CDQ Description Input Output Sample Input 100 100 81 23 27 16 52 58 ...
- BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶
BZOJ2648: SJY摆棋子 BZOJ2716: [Violet 3]天使玩偶 BZOJ氪金无极限... 其实这两道是同一题. 附上2648的题面: Description 这天,SJY显得无聊. ...
- bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree
2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 Time Limit: 20 Sec Memory Limit: 128 MB Description 这天,S ...
- BZOJ 2716 Violet 3 天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 2145 Solved: 928 [Submit][Sta ...
- 【BZOJ 2716/2648】 [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 kd-tree模板题. ①首先依次按照每一维(即先按照 x x,再按照yy,再按照 x x-多维同理)将点存在一棵二叉树中: 先求出以当前维数为关键字的中间点 ...
- BZOJ 2716: [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 1473 Solved: 621 [Submit][Sta ...
- [BZOJ2716/2648][Violet 3]天使玩偶/SJY摆棋子[KDtree]
KDtree干这个复杂度是不对的,重构不一定有作用 解释一下的话,因为复杂度是跟size相关的,所以重构作用不大,KDtree在查询最近点对中的作用仅仅是剪枝,可以构造数据使得他遍历O(n)个节点 h ...
最新文章
- NLP突破性成果 BERT 模型详细解读 bert参数微调
- linux企业常用命令必之必会二
- Matlab中的图形句柄(转载)
- idea 执行java maven,IDEA的run maven方式启动步骤详解
- python手机app 授权登录_Appium+unittest+python登录app
- js图片懒加载的第二种方式
- MySQL复习资料(九)——MySQL-图形化工具使用
- SpringBoot之静态资源访问
- zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计
- Amazon S3 设置对象的生命周期Lifecycle
- vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE
- css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...
- 大屏监控系统实战(7)-后端整合MybatisPlus并暴露服务
- jQuery 设计和自定义一个带展开动画效果的导航栏
- php7 断言,PHP7.2常用新特性和函数
- text——Android下的默认字体详解
- 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
- 扫描仪 无线 打印服务器,自带扫描仪、还能无线打印,Find X2 Pro实用功能分享...
- 分享一个精灵盛典辅助工具挂机方案
- android画笔,Android自定义View系列之画笔(一)