K-D-tree
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj2648 SJY摆棋子(K-D Tree)
题目大意:给定一个二维平面,初始时有一些点了。然后有两种操作: 1.在(x,y)再加一个点 2.查询离(x,y)最近的点的距离。这里的距离是曼哈顿距离。 K-D tree,即K-Dimensional Tree,是一种高维索引树型数据结构。常用于大规模高维数据空间的最邻近或者K邻近查找,例如图像检索中高维图像特征向量的K邻近匹配,对KNN算法的优化等。 实现思路大体上就是:建出一棵BST.原创 2018-01-11 10:48:12 · 866 阅读 · 0 评论 -
bzoj4604 The kth maximum number(动态开点线段树逃替罪羊重构K-D tree)
是bzoj4605的弱化版。 可以离线,数据范围小一些,因此可以整体二分套cdq。 或者直接双倍经验(逃#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 500010#define alpha 0.77inline char ...原创 2018-06-14 22:31:24 · 257 阅读 · 0 评论 -
bzoj4533 [BeiJing2014 WinterCamp] 数据(K-D tree)
模板题改了两天,wc要gg了。 曼哈顿距离最小值注意分类讨论。原创 2018-02-07 11:21:47 · 394 阅读 · 0 评论 -
bzoj2626 JZPFAR(求K远点)
类似bzoj3053,求第K远点。打打板子,找找手感。 学习了一下priority_queue如果想自定义小根堆,要重载大于号。原创 2018-01-24 21:57:09 · 787 阅读 · 0 评论 -
bzoj4520 [Cqoi2016]K远点对(K-D tree)
类似bzoj3053,求第K远点对,我们暴力的循环n个点,每次拿着这个点去找能更新答案队列的点。因为每个点对我们都计算了两次,所以要开两倍k的队列,最后top就是答案。原创 2018-01-14 13:56:06 · 396 阅读 · 0 评论 -
bzoj2683 简单题(K-D tree/CDQ分治)
二维数点。。。可以离线,怎么搞都行啦,是bzoj4066的弱化版。原创 2018-01-13 22:10:32 · 391 阅读 · 0 评论 -
bzoj4358 permu(莫队+线段树||莫队+并查集+分块||K-D tree)
很久以前的坑=,= 题意:给你一个排列序列,每次询问问l,r区间内最长的值域连续段长度。范围50000,长得就像莫队-,-。怎么转移呢,首先有一个比较明显的做法,用数值建一棵线段树,维护最大子段和。这样的复杂度是(nn−√logn)(n\sqrt nlogn)的,但是常数巨大,不太好卡过去。。。按堆建树,从下往上推,蜜汁分块大小,居然卡过去了。欣慰,附上代码。然而正解是这样的:我们对每一个数都记一原创 2017-08-03 11:55:50 · 1054 阅读 · 0 评论 -
bzoj3489 A simple rmq problem(K-D tree三维子空间求最大值)
首先对于这种只出现一次才有用的问题,我们先处理出每个点的有效区间L[i]~R[i]。在这里,我们定义L[i]为a[i]上一次出现的位置,R[i]为a[i]下一次出现的位置。则对于每个询问l,r,怎样的位置上的数是满足条件的呢?需要满足三个条件,即: 1.l<=i<=r 2.L[i]< l 3.R[i]> r 如果我们把每个位置上的数看做一个三维空间的点,即P[i](i,L[i],R[i]),原创 2018-01-12 21:29:11 · 484 阅读 · 0 评论 -
bzoj4822 [Cqoi2017]老C的任务(离线+扫描线+离散化+树状数组/KD tree)
因为可以离线做,而且所有点一开始就给定,所以可以用扫描线+树状数组来做。如果强制在线,还可以用kd tree做。原创 2018-01-11 23:21:26 · 353 阅读 · 0 评论 -
bzoj3053 The Closest M Points(求k维m邻近点)
首先是变成k维了。其次是求欧几里得距离。再其次是求m邻近点。怎么求m邻近点呢?我们开一个大根堆(优先队列)。先扔进去m个inf。然后每次查询的时候,用所得答案与大根堆的堆顶比较,如果更小,就弹出堆顶,并放进新答案。最后倒序输出这m个点。原创 2018-01-11 22:36:12 · 460 阅读 · 0 评论 -
bzoj4066 简单题(K-D tree)
强制在线,内存还很小,只能K-D Tree。空间O(n),时间复杂度O(m∗m−−√)O(m*\sqrt m)?每累积了很多点以后就暴力重构一下,保证一下效率。原创 2018-01-11 21:06:12 · 418 阅读 · 0 评论 -
bzoj2850 巧克力王国(K-D tree)
这…kdtree反正能过???感觉K-D tree就像在空间中分块暴力一般x 好神呀x原创 2018-01-11 14:08:24 · 331 阅读 · 0 评论 -
bzoj1941 [Sdoi2010]Hide and Seek(K-D tree)
循环每一个点,求出据他最近的点的距离和最远的点的距离。用KD-tree来求。原创 2018-01-11 12:30:18 · 310 阅读 · 0 评论 -
bzoj2716 [Violet 3]天使玩偶(同bzoj2648)
bzoj2716 [Violet 3]天使玩偶(同bzoj2648)原创 2018-01-11 11:10:34 · 1653 阅读 · 0 评论 -
bzoj4605 崂山白花蛇草水(动态开点线段树逃替罪羊重构K-D tree)
首先我们发现它是一个三维的问题而且还强制在线 囧 我们可以考虑在外面来一个权值线段树,然后每次查询时在线段树二分即可,这样我们每个节点再套一棵K-D tree,用来查询有多少个点被框住了,然后因为是不断往里插点,所以还要替罪羊式重构维护一下K-D tree。 最后复杂度就是O(qlogwn−−√)O(qlogwn)O(qlogw\sqrt n)#include <bits/stdc+...原创 2018-06-14 22:37:24 · 246 阅读 · 0 评论