
KD-tree
L_0_Forever_LF
一个热爱OI的OIer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KD_tree 板子
例题:3489: A simple rmq problem在[l,r]内找只出现一次的,最大的数 用pre记录每个位置的数上次出现位置,nex记录下次出现位置 一个位置i的值在[l,r]内只出现一次,那么 l <= i <= r , prei< l, nexi>r,所以给一个点三维坐标(i,prei,nexi),询问时用kd-tree找(l~r,0~l-1,r+1~n+1)里最大的值code原创 2017-03-19 15:59:54 · 1034 阅读 · 0 评论 -
BZOJ4154: [Ipsc2015]Generating Synergy
树套树或kd-tree 点a的dfs序为一维,另一维是a的层数code:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #incl原创 2017-03-25 08:13:22 · 958 阅读 · 0 评论 -
BZOJ4170: 极光
将每个位置的位置定为x,graze值定为y 那么任意位置上出现过的任意数值就对应上了平面上的若干个点 每次询问和一个点的哈密顿距离 <= x的点的个数 将哈密顿距离转为切比雪夫距离(x,y)−>(x+y,x−y)(x,y)->(x+y,x-y) 和一个点切比雪夫距离 <= x的点对应平面上一个矩形 那么询问就变成了询问平面上一个矩形内的点的个数 用KD-tree或cdq都是兹瓷的code原创 2017-04-26 08:32:07 · 1089 阅读 · 0 评论 -
BZOJ3833: [Poi2014]Solar lamps
可以将给出的直线视作向量,那么当这两个向量不共线时(共线时情况类似),建立出以这两个向量为基底的坐标系,将坐标取反后,每盏灯(x,y)亮了后,能照亮的区域是(<=x,<=y),然后直接暴力弄这个东西就行了 因为不会写树套树qwq,我写了kd-tree,卡了半天卡过去了qwq 为了减小常数写了指针和一些奇奇怪怪的东西,代码可能不会很友好code:#include<set> #include<map原创 2017-11-29 21:35:57 · 405 阅读 · 0 评论 -
BZOJ4066: 简单题
50s卡过..不知道为什么这么慢格子(x,y)里的加A可以直接插入一个值为A的点(x,y),如果原来有这个点了也没关系 因为插入可能导致树不平衡,所以用替罪羊树的重构思想,不满足平衡条件时暴力重构子树code:#include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #include原创 2017-03-25 08:19:42 · 942 阅读 · 0 评论