
k-d树
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
bzoj4520 [Cqoi2016]K远点对
https://www.lydsy.com/JudgeOnline/problem.php?id=4520查询第k远点对的欧几里得距离,由于重复,所以要记录前2k对估价函数就是两维最大差值的平方之和还要比最大的2k个中最小的小的话,就不仅进入该子树。进入子树的顺序因为是最远点对,所以优先进相反边,更容易找到更大的。#include<bits/stdc++.h>usi...原创 2020-02-12 12:46:23 · 226 阅读 · 0 评论 -
bzoj4154 [Ipsc2015]Generating Synergy
https://www.lydsy.com/JudgeOnline/problem.php?id=4154这种1e5,还要整个子树修改的,显然在原树上就不太可能实现区间覆盖和查询,子树可以想到dfs序是在一个区间内,深度不超过l可以想到深度在一个区间内,那么把原来的所有点按照dfs序和深度,重新建一棵kd树就行了,然后可以标记一个tag,这个子树的超平面全在更改区间中的时候,直接打tag,...原创 2020-02-12 00:20:10 · 224 阅读 · 0 评论 -
bzoj 4066: 简单题
https://www.lydsy.com/JudgeOnline/problem.php?id=4066很快就想到了,维护子树超平面,如果要求的范围完整包含这个子树,就直接加sum,否则看是否有相交,再考虑进入子树。因为一直insert,kd树可能无法保证复杂度,所以要10000个点重构一次,复杂度是20*2e5复杂度然后写完了,查了一晚上错,再重写了一遍,没找出来错误然后开始...原创 2020-02-10 23:51:05 · 165 阅读 · 0 评论 -
bzoj1941 [Sdoi2010]Hide and Seek
https://www.lydsy.com/JudgeOnline/problem.php?id=1941这题就是在bzoj2648的基础上多了要求最长的距离。那么只要改一下估价函数就行了,一个点在一棵子树上的超平面可以产生的最大曼哈顿距离就是max(x[i]-mi[i],mx[i]-x[i])之和。#include<bits/stdc++.h>using nam...原创 2020-02-10 18:02:38 · 238 阅读 · 0 评论 -
bzoj2648 SJY摆棋子
https://www.lydsy.com/JudgeOnline/problem.php?id=2648如果是带插入的话就要写动态生成节点了,类似主席树的写法。下题是求曼哈顿距离,曼哈顿距离可以维护每个子树中所有节点的x的最大最小值,y的最大最小值,然后query的时候计算左右子树的非法值,非法值是指在这个子树的超平面(也就是x,y范围外的和)外的和,左子树大还是右子树大,就先去哪里,如...原创 2020-02-10 16:59:14 · 144 阅读 · 0 评论 -
hdu5992 Finding Hotels 2016青岛区域赛
http://acm.hdu.edu.cn/showproblem.php?pid=5992按照x,y两维建k-d树,价格<=的时候再记录答案就行了。#include<bits/stdc++.h>using namespace std;const int maxl=2e5+10;int n,m,idx,ans,ansdis;struct node{ in...原创 2020-02-09 20:05:26 · 166 阅读 · 0 评论 -
hdu4347 The Closest M Points
http://acm.hdu.edu.cn/showproblem.php?pid=4347K-D树板题,这题是照着别人的代码抄的,感觉不是很符合我的风格,之后再改。对于K-D树我的理解感觉还是不太对,之后得多看点博客,再做点题理解才好首先建树是按照线段树的方式向下建的,然后每一层按照他的深度取不同维度的中位数放在当前点,然后继续向下递归建树。然后我们再查询的时候,先判断询问的点在...原创 2020-02-09 20:04:03 · 163 阅读 · 0 评论