kd-tree
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[BZOJ4520][Cqoi2016]K远点对(kd-tree+堆)
题目描述传送门题解枚举每一个点,求前k大用一个小根堆维护一下就行了 kd-tree查询的时候一对点会算两次,所以求前2k大 刚开始手残T死了mdzz…代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>#include<vector>原创 2017-02-17 10:18:32 · 575 阅读 · 0 评论 -
[BZOJ1941][Sdoi2010]Hide and Seek(kd-tree)
题目描述传送门题解sdoi竟然会考kd-tree裸题= =惊恐脸 询问每一个点的最近点和最远点然后更新答案就行了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1000005#define inf 2原创 2017-02-10 16:41:40 · 995 阅读 · 0 评论 -
[BZOJ2626]JZPFAR(kd-tree+堆)
题目描述传送门题解注意这里是最远的k个点 和BZOJ3053差不多,多了一个限制,就是编号要尽量大 就把维护的堆改一下就行了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define原创 2017-02-10 16:48:40 · 795 阅读 · 0 评论 -
[BZOJ3053]The Closest M Points(kd-tree+堆)
题目描述传送门题解比较裸的kd-tree 每一次询问维护一个大小为m的优先队列(大根堆),查询的时候和堆顶比较 最后堆中的元素就是答案代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#de原创 2017-02-10 16:46:18 · 790 阅读 · 0 评论 -
[BZOJ4066]简单题(kd-tree)
题目描述传送门题解有强制在线,不能用cdq分治做了= = 不过可以用kd-tree 由于是要求和,维护一个sum 如果要是左右子树都在范围内,直接加和 如果都不在范围内,跳过 否则递归子树代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using name原创 2017-02-12 17:10:08 · 680 阅读 · 0 评论 -
[BZOJ3489]A simple rmq problem(kd-tree)
题目描述传送门题解三维kd-tree,分别是:这个点的位置,上一个相同数字的位置,下一个相同数字的位置 然后每一个有一个点权即为这一位上的数字,然后对于每一个子树维护位置的最大值和最小值,以及前面的最小值和后面的最大值,这样来判断、暴力即可 我刚开始的时候强行把点权塞到一维里去,然后吃惊地发现比3d要快一些,大概是因为某些时候按照点权这一维度划分能一次卡掉更多的点卡常技巧:能不维护的就不维护代码原创 2017-02-21 17:06:44 · 877 阅读 · 2 评论 -
[BZOJ2850]巧克力王国(kd-tree)
题目描述传送门题解需要注意的一点是因为有负数,所以不一定是最大的乘起来最大 所以四个都要判断一下 然后在kd-tree上维护一个sum就行了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long原创 2017-02-12 18:38:24 · 658 阅读 · 0 评论