随笔分类 - 数据结构——LCT
摘要:VIII.[BZOJ2959]长跑 我想把出这么毒瘤的题的人拖出来揍一顿 这题稍微想想,就是动态维护点双连通分量并缩点,然后在缩出来的树上求两点距离。 思想简单但代码极其复杂。 首先,我们可以使用冰茶姬维护点双,所有的点全都并到一个冰茶姬中,除了冰茶姬的象征节点,其它的点一律全都删去,不保留任何信息
阅读全文
摘要:VII.[SHOI2014]三叉神经树 LCT相较于树剖,最大的优势就是可以把一条链上的东西全整到一个splay里面,不像树剖在多个重链进行合并时会有很大麻烦。更好的是,LCT复杂度是的,树剖不仅码量大,思路复杂,复杂度还是恶心的。 这题就是典型的树
阅读全文
摘要:VI.[SDOI2011]染色 你们知道吗?LCT考的就两个,一个,一个。 这里就是经典的维护颜色段。在每个节点,我们维护四个值:,左端颜色;:右端颜色;:区间颜色段数;:当前点的颜色。 然后就是经典的老套路了。
阅读全文
摘要:V.[国家集训队]Tree II LCT维护这种东西是要比线段树要恶心的多的……毕竟线段树的区间大小是可以直接通过区间左右端点算出的,但是LCT就不行,必须手动维护。并且,线段树的维护是(左儿子+右儿子),但是LCT的维护是(左儿子+自己+右儿子)! 请务必先把线段树模板做掉,关于运算的优先级什么的
阅读全文
摘要:IV.[NOI2014]魔法森林 前三题都是模板,是为了让我们练手的。 这题才是真正的挑战。 首先,一看这题既不加边也不删边,甚至连树都不是,还是道静态题,并且长得还贼像最小生成树,我就纳闷了,这是LCT? 还真是。 我们可以将边按照排序。之后,我们维护一个关于权值的动态最小生成树。 具
阅读全文
摘要:III.[HNOI2010]弹飞绵羊 首先,可以发现,如果从一个装置的目标向这个装置连一条边,并且建立虚拟节点,向所有可以弹飞的装置连边的话,这肯定构成一颗树。 理解就行。然后我们就可以在每个节点统计一个,并用LCT在改变弹力系数时修改这棵树。则最终答案为: int ask(i
阅读全文
摘要:II.[SDOI2008]洞穴勘测 也是近似的模板题,甚至比模板还要简单,连维护都不需要。 主要是为了多敲几遍熟悉代码。 代码: #include<bits/stdc++.h> using namespace std; #define lson t[x].ch[0] #define
阅读全文
摘要:LCT。 I.LCT可以干什么? 动态树问题, 是近几年在OI中兴起的一种新型问题, 是一类要求维护一个有根树森林, 支持对树的分割,合并等操作的问题。 由Robert E Tarjan为首的科学家们 提出解决算法Link-Cut Tree,简称LCT。 ——《百度百科》 算了,看看就行。 我们唯一
阅读全文