摘要:
树链剖分 前置芝士 就像它的名字,树链剖分是在一棵树上进行,在讲解中还会用到线段树和dfs,如果不会,打开链接自行搜索(主要是线段树的博客没做,还有不要问我为什么这算知识)。 一个节点的重儿子,为其更大的一颗子树的根节点。从这个点连向重儿子的边我们称为重边。 由重边连续连起来的点和边就组成了重链 阅读全文
摘要:
启发式合并 概念 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 作用 可以启发式合并更加高级的数据结构,如 \(heap,~set,~splays\) 等 复杂度计算 每次把个数少的合并到个数多的?复杂度 \(O(min(m1,m2))\) 可是我们注意到,每次合并后个数为合并前少的部分 阅读全文
摘要:
线段树合并 前置芝士 动态开点线段树和权值线段树 乍一看,线段树合并和上面那两个奇怪的东西有什么关系。 其实,线段树合并的全称为动态开点权值线段树合并( 雾 如果对上面那两个奇怪的东西不理解可点开链接进行搜索(大雾 优点 动态开点线段树有着一些优点,比如说当你让某个节点继承另一个节点的左儿子或者 阅读全文
摘要:
动态开点线段树 前置芝士 众所周知,普通线段树空间复杂度是 \(O(n*4)\) 所以当n很大的时候,如果正常的去建一颗线段树,开4倍n空间显然会炸内存 怎么办呢? 这个时候,动态开点线段树出现了。 概念 动态开点线段树是一类特殊的线段树,与普通的线段树不同的是,每一个节点的左右儿子不是该点编号 阅读全文
摘要:
权值线段树 前置芝士 顾名思义,权值线段树也算是一种线段树,它的本质也是线段树。所以在学习权值线段树之前,如果对普通线段树的掌握不太熟,可以先去这里去搜索线段树进行学习。 而权值线段树的进一步本质则是用线段树维护桶。同理,如果不知道桶是什么可以到这里进行搜索。 概念 我们知道,普通线段树 阅读全文