
【数据结构】KD-Tree
文章平均质量分 80
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3262】陌上花开
【题目链接】点击打开链接【思路要点】直观地来想,本题可以先排序一维,然后使用二维数据结构(树套树,KD-Tree)来解决。时间复杂度\(O(NLog^{2}N)\)或\(O(N\sqrt{N})\)。或者也可以用CDQ分治来解决本题,时间复杂度同样为\(O(NLog^{2}N)\)。其中树套树的空间复杂度高达\(O(NLog^{2}N)\),粗糙的实原创 2018-01-16 10:34:49 · 492 阅读 · 0 评论 -
【BZOJ2716】【Violet 3】天使玩偶
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define INF 1e9template <typename T> void read(T &x) { x = 0; int f = 1; char c = ge...原创 2018-05-31 19:35:04 · 3121 阅读 · 0 评论 -
【BZOJ2648】SJY摆棋子
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define INF 1e9template <typename T> void read(T &x) { x = 0; int f = 1; char c = ge...原创 2018-06-04 13:41:59 · 375 阅读 · 0 评论 -
【LOJ2586】「APIO2018」选圆圈
【题目链接】点击打开链接【思路要点】将坐标系以原点为中心旋转一定角度,对圆心建立KDTree。模拟题目中的过程,利用KDTree的子树信息进行剪枝。最坏时间复杂度\(O(N^2)\),期望时间复杂度\(O(NLogN)\)。【代码】/*Double Version, Faster but Lower in Precision*/#include<bits/stdc++.h>usin...原创 2018-05-23 10:43:53 · 767 阅读 · 0 评论 -
【BZOJ4520】【CQOI2016】K远点对
【题目链接】点击打开链接【思路要点】KDTree实现K-临近搜索,实现时需要用一个堆来辅助。时间复杂度\(O(N\sqrt{N}+NKLogK)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005template <typename T> void read(T &x) {...原创 2018-04-25 17:17:33 · 214 阅读 · 0 评论 -
【BZOJ1176】【Balkan2007】Mokia
【题目链接】点击打开链接【三倍经验链接】【BZOJ2683】简单题【BZOJ4066】简单题【思路要点】KDTree+替罪羊树式重构即可。时间复杂度\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define ALPHA 0.65template <ty...原创 2018-04-25 13:11:11 · 256 阅读 · 0 评论 -
【BZOJ4066】简单题
【题目链接】点击打开链接【三倍经验链接】【BZOJ1176】【Balkan2007】Mokia【BZOJ2683】简单题【思路要点】KDTree+替罪羊树式重构即可。时间复杂度\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define ALPHA 0.65t...原创 2018-04-25 13:10:47 · 329 阅读 · 0 评论 -
【BZOJ2683】简单题
【题目链接】点击打开链接【三倍经验链接】【BZOJ1176】【Balkan2007】Mokia【BZOJ4066】简单题【思路要点】KDTree+替罪羊树式重构即可。时间复杂度\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define ALPHA 0.65t...原创 2018-04-25 13:09:53 · 394 阅读 · 0 评论 -
【BZOJ1941】【SDOI2010】Hide and Seek
【题目链接】点击打开链接【思路要点】用KDTree做的话就是模板题了,时间复杂度\(O(N\sqrt{N})\)。正解应该是分治。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 500005#define INF 1e9template <typename T> void read(T &...原创 2018-04-23 19:53:09 · 333 阅读 · 0 评论 -
【BZOJ4538】【HNOI2016】网络
【题目链接】点击打开链接【思路要点】对树进行DFS序标号,令节点\(i\)的DFS序为\(dfn_i\),\(i\)子树内的节点DFS序范围为\([dfn_i,rit_i]\)。对于路径\((a,b)\),节点\(x\)不影响\((a,b)\)的条件是满足以下之一:1、\(dfn_{lca(a,b)}\in(dfn_x,rit_x]\)。2、\(dfn_a\notin[dfn_x,rit_x]\)...原创 2018-03-21 19:31:46 · 315 阅读 · 0 评论 -
【BZOJ2253】纸箱堆叠
【题目链接】点击打开链接【思路要点】树套树,KDTree,CDQ分治都能做。CDQ分治的话需要注意这里要求“严格小于”,取中点时应当保证左右两边第一维坐标不会相等。时间复杂度\(O(NLog^2N)\)或\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;t...原创 2018-03-25 18:07:12 · 426 阅读 · 0 评论 -
【BZOJ3815】【UOJ40】【清华集训2014】卡常数
【题目链接】BZOJUOJ【思路要点】加密方式对实数是单调的,可以通过二分来解密。然后,大概就是一道KD-Tree基础题了。由于数据随机,并不需要加入替罪羊树式的重构,直接暴力插入即可。时间复杂度\(O(M\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 65536 + 5;co...原创 2018-02-28 12:50:18 · 608 阅读 · 0 评论 -
【LOJ3159】「NOI2019」弹跳
【题目链接】点击打开链接【思路要点】考虑模拟最短路算法的过程,需要维护一个二维点集,支持矩形 chkminchkminchkmin ,询问全局最小值,单点删除,并且不能占用过多空间。显然可以用 KD−TreeKD-TreeKD−Tree 解决。时间复杂度 O(MN)O(M\sqrt{N})O(MN) ,空间复杂度 O(N)O(N)O(N) 。【代码】#includ...原创 2019-07-31 14:02:16 · 507 阅读 · 0 评论