随笔分类 -  数据结构

摘要:K-D Tree 细节 KDT和树套树并非等价,树套树一般是时间O(nlog2n),空间O(nlogn)的,KDT是时间O(nlogn+nn)(修改+查询),空间O(n) 子树递归时,值域越界判断不要像线段树一样写\(L<=mid,R>mid\ 阅读全文
posted @ 2024-11-11 11:21 Zhone_lb 阅读(7) 评论(0) 推荐(0) 编辑
摘要:前置知识:Splay和文艺平衡树 介绍 Link Cut Tree,简称LCT, 时间复杂度分析 细节 原splay函数 Rotate()中,注意son[z][]的赋值要有限制语句isroot(y),因为z可能是“认父亲不认儿子”的splay根节点的父亲(Splay()中的限制管不到,因为Splay 阅读全文
posted @ 2024-11-02 17:26 Zhone_lb 阅读(7) 评论(0) 推荐(0) 编辑
摘要:Splay 技巧/记忆点: 1、Rotate()中,使用变量记录位置关系和下标; 2、Find()(找元素x所在位置)减少重复代码; 3、求前驱/后继时先把这个数插进去再删掉; 4、Splay()父子同侧先翻父亲,再翻儿子,否则翻两边儿子; 5、siz[]在Splay()前先Pushup() 阅读全文
posted @ 2024-11-02 17:16 Zhone_lb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:7574 -- 【6.05模拟】数据结构 分块 二次离线回滚莫队 cdq分治+扫描线 题目限制太多,考虑先消去y的限制,很容易想到将点分成ymidy>mid两部分,此时上下两部分可以分开统计最大值 但是如果直接将询问扔进去又会变成O(nQlogn)的,考虑这 阅读全文
posted @ 2024-11-02 17:15 Zhone_lb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:轻重链剖分 性质 重链 重链内编号连续,可以用线段树维护一些值 路径 对于树上任意两点x,y,它们的路径经过的重链不超过logn条 树剖正是运用这种方式,把1个修改/询问变成logn个修改/询问,然后高效求解 注意:树剖的作用是将树上问题拆成logn个序列问题,并不是 阅读全文
posted @ 2024-10-31 17:48 Zhone_lb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:队列 取出放入问题 给一个序列,将最小值x取出,再将f(x)放入 一般f(x)符合某些规律或性质,多开若干个序列维护即可 例1 [P2827] 蚯蚓 例2 [P6033] 合并果子 加强版 堆 例1 P1631序列合并 有两个长度都为n的序列A、B,在A和B中各选一个数相加可以得到n2个数。求这n2 阅读全文
posted @ 2024-10-31 17:14 Zhone_lb 阅读(9) 评论(0) 推荐(0) 编辑
摘要:线段树 常用于维护区间值 代码 和题解有很大差异,但是过了就好 void Pushup(int x) { s[x]=(s[x<<1]+s[x<<1|1]); } void Pushdown(int x,int l,int r) { s[x]=(s[x]+ad[x]*(r-l+1)); if(l!=r 阅读全文
posted @ 2024-10-31 17:07 Zhone_lb 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示