平衡树学习总结、LCT练习题
摘要:Splay: 像BST(二叉搜索树)一样插入查询,可以改变树的形状,可以区间翻转,可以实现动态树,不可持久化。 核心代码: 1 void rotate(int a) // 旋转 2 { 3 int b = fa[a], c = fa[b]; 4 int k = son[b][1] == a, w =
阅读全文
posted @
2020-07-17 22:24
ArrogHie
阅读(378)
推荐(0)
树上倍增、树分治学习总结
摘要:树上倍增: 核心: F[u][i] 表示u节点往上走2i步到达的祖先节点,F[u][0]=fa[u],F[u][i]=F[F[u][i-1]][i-1],其他需要维护的数值也与此格式类似 【SCOI2016】幸运数字(题目): 倍增时合并一下线性基即可 1 #include<cstdio> 2 #i
阅读全文
posted @
2020-07-14 17:00
ArrogHie
阅读(280)
推荐(0)
树链剖分,LCT学习总结
摘要:概念: 对于一棵有根树,每个非叶节点选择至多一个连向孩子的边称为 “实边”(重边) ,这个边集称为这棵树的一个链剖分,不在集合中的边称为“虚边“(轻边)。如图,黑边为重边,白边为轻边。 重链: 每个非叶节点向他的节点数最大的子节点连一条重边; 重链求LCA: 如果两个点在同一条链上,则深度小的为答案
阅读全文
posted @
2020-07-03 09:15
ArrogHie
阅读(517)
推荐(1)