Processing math: 25%
随笔 - 42  文章 - 0 评论 - 4 阅读 - 10263
< 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

07 2020 档案
最近公告祖先 (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) 编辑
配对堆
摘要:配对堆 一种可并堆。 插入、合并复杂度为O(1),删除等操作的复杂度为均摊O(logn)。 优点:代码短,常数小。 配对堆的结构 用左儿子右兄弟的方式存树。 对每个结点,储存其右兄弟和最左端的儿子。 操作 merge(x,y):合并以x,y为根的两个配对堆。若x,y中有空树则返回非空树,否则将节点大 阅读全文
posted @ 2020-07-18 21:04 Allen_lml 阅读(443) 评论(0) 推荐(0) 编辑
矩阵快速幂
摘要:题目背景 矩阵快速幂 题目描述 给定 n × n的矩阵A,求{A^k} 输入格式 第一行两个整数n,k接下来n行,每行n个整数,第i行的第j个数表示{A_{i,j}}. 输出格式 输出{Ak} 共n行,每行n个数,第i行第j个数表示$\langle{Ak}\rangle 阅读全文
posted @ 2020-07-14 11:21 Allen_lml 阅读(118) 评论(0) 推荐(0) 编辑

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