用途
KD_TREE可以求K维空间最短/长两点的距离
或者前T长的距离,蒟蒻大概就知道这一点。。。
思想
把空间切割,完成缩短时间的半目的
实现(建树,插入)
怎样切割???
用二叉树来实现,每一层按层数%K这一维切割
记录每一个子空间的状态就可以了,例如处理出每个空间每维的上限下限
然后合并子树的状态,插入类似
复杂度
就可以做到随机数据logN的复杂度,但毒瘤出题人一卡就变为了sqrt(N)
我也不知为什么。。。。。大佬都这样说。。。
最后的空间就大概被分成了log(N)个吧。。
查询
查询的时候与空间的上下限比较,如果更优就递归,先递归优的
例题
bzoj1941sdoi捉迷藏
板子。二维的,无修改
bzoj2648SJY摆棋子
板子+修改,二维