Processing math: 0%
随笔 - 42  文章 - 0 评论 - 4 阅读 - 10261
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

随笔分类 -  数据结构

最近公告祖先 (LCA)
摘要:最近公共祖先LCA int LCA(int x,int y) { if(dep[x]<dep[y]) swap(x,y); int d=dep[x]-dep[y]; for(int p=0,k=1;p<k;p++,k<<=1) if(d&k) x=f[p][x]; if(x==y) return x 阅读全文
posted @ 2020-07-23 20:13 Allen_lml 阅读(115) 评论(0) 推荐(0) 编辑
树链剖分【板子】
摘要:树链剖分 void dfs1(int x) { sz[x]=1; for(int i=b[x];i;i=nxt[i]) { if(to[i]==f[x]) continue; f[to[i]]=x; dep[to[i]]=x; dep[to[i]]=dep[x]+1; dfs1(to[i]); sz 阅读全文
posted @ 2020-07-23 20:09 Allen_lml 阅读(114) 评论(0) 推荐(0) 编辑
平衡树之Treap
摘要:二叉搜索树 性质:一个节点x左子树所有点的关键字都比x的关键字小,右子树所有点的关键字都比x的关键字大 treap “树堆” “Tree+Heap” 性质:每个点随机分配一个权值,使treap同时满足堆性质和二叉搜索树性质 复杂度:期望O(logn) 设每个节点的关键字是key,随机权值是rand 阅读全文
posted @ 2020-07-21 20:02 Allen_lml 阅读(146) 评论(0) 推荐(0) 编辑
ST表
摘要:ST表 *ST表用来实现O(logn)*预处理,O(1)查询区间最值。 不支持修改 适用于O(logn)查询区间最值会被卡的情况。 以查询最大值为例。 预处理:记f_{i,k}表示从i开始2^k个数的最大值,则 f_{i,k}=max(f_{i,k},\(f_{i+2^{k- 阅读全文
posted @ 2020-07-18 21:22 Allen_lml 阅读(58) 评论(0) 推荐(0) 编辑
配对堆
摘要:配对堆 一种可并堆。 插入、合并复杂度为O(1),删除等操作的复杂度为均摊O(logn)。 优点:代码短,常数小。 配对堆的结构 用左儿子右兄弟的方式存树。 对每个结点,储存其右兄弟和最左端的儿子。 操作 merge(x,y):合并以x,y为根的两个配对堆。若x,y中有空树则返回非空树,否则将节点大 阅读全文
posted @ 2020-07-18 21:04 Allen_lml 阅读(443) 评论(0) 推荐(0) 编辑

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