随笔分类 - LCT
摘要:传送门 因为某些原因,所以我就去学了 $LCT$ 维护直径, $LCT$ 维护直径我上一个博客讲得很详细了:传送门 这里维护虚儿子用的是 $multiset$ ,没写可删堆
阅读全文
摘要:传送门 动态维护树上节点到其他所有点的最长距离 算是 $LCT$ 的模板之一吧 $LCT$ 维护直径,这一题其实可以不用维护直径的,但是我当模板写了 首先我们都知道 $LCT$ 里面的 $splay$ 维护的是一段树链,$splay$ 的子树内的节点恰好为原树上一段连续的链 对每条实链的 $spla
阅读全文
摘要:传送门 经典 $LCT$ 题,动态维护生成树 把边按边权从小到大排序,一条条加入,如果还没联通就直接连,联通了就把原本路径上最小的边替换 构成树了以后就可以更新答案了 然后问题来了,怎么动态维护整颗树的最大边权和最小边权 直接开一个 $multiset$ 就行了...... 聪明的方法是用指向最小的
阅读全文
摘要:传送门 如果只有一种颜色,显然 $LCT$ 多种颜色,发现颜色不多,所以对每一种颜色建 $LCT$ 编号 $c$ 的颜色的第 $i$ 个节点在 $LCT$ 中编号 $c*n+i$ 改颜色的时候有一堆细节,具体来讲 用 $map$ 来判断两点之间是否有边并记录边的颜色,注意边 $(x,y)$ 和 $(
阅读全文
摘要:传送门 显然 $LCT$ 动态维护最小生成树 询问就是问树上两点的路径中权值最大的边 为了维护边权,我们要把边也看成点,为了方便,边在 $LCT$ 中的编号为 $n+1$ 到 $n+m$ 因为正做不好维护删边,所以离线倒过来,变成加边 在反过来做的时候,为了维护最小生成树要知道哪些边被删除了 用 $
阅读全文
摘要:传送门 动态维护森林 显然考虑 $LCT$ 但是发现询问求的是子树大小,比较不好搞 维护 $sum[x]$ 表示节点 $x$ 的子树大小,$si[x]$ 表示 $x$ 的子树中虚儿子的子树大小和 那么 $pushup$ 可以这样写: 考虑什么时候 $si$ 会变 首先对于 $rotate,splay
阅读全文
摘要:传送门 显然 $LCT$ 维护,除了翻转标记,还要维护加法,乘法和子树大小 注意模数看起来很小,但是乘的时候还是会爆 $int$ ,所以要用 $unsigned\ int$ 代码中的标记为延时标记,就是当前节点的标记说明当前节点还没更新,要等到下传标记时才更新,个人认为会好写一些(不用考虑先乘还是先
阅读全文
摘要:传送门 维护森林中点之间的连通性,有加边和删边操作,保证不出现环 显然直接 $LCT$ 维护,模板套进去就好了
阅读全文
摘要:传送门 如果一条边只要考虑 $a$ 的限制,那么显然最小生成树 但是现在有 $a,b$ 两个限制,所以考虑按 $a$ 从小到大枚举边,动态维护 $b$ 的最小生成树 考虑新加入的一条边 $x,y$ ,如果 $x,y$ 不在一颗树上显然直接加入,如果在一棵树上,考虑原本树上 $x$ 到 $y$ 的路径
阅读全文
摘要:传送门 LCT裸题,设 $k[i]$ 为位置 $i$ 弹簧的弹力系数,那么从 $i$ 往 $i+k[i]$ 连一条边,显然所有边构成了一个森林 直接 LCT 维护森林,询问 $x$ 就把 $x$ 到根的路径连起来 ($access(x)$) ,然后输出 $x$ 的 $splay$ 的节点数就好了 修
阅读全文