如果是学习的话,可以看一下这篇博客 LCT有一点类似于树链剖分,只不过是实链和虚链,然后可以不断变化。每一条实链用一个splay(深度为关键字)维护,splay还原出来就应该是一条由浅到深的链。 Splay的根的father是原树中链顶的父节点。特别的,原树根所在的Splay根节点的father为空 ...
分类:
其他好文 时间:
2019-07-25 19:10:56
阅读次数:
116
看到lct的题解比较少,所以我来贡献一篇 注意的地方and坑点 1. 只用把mmax [ 0 ](维护的最大值)初始化为极小值 2. sum [ i ] , mmax [ i ]在输入时就可赋值为val [ i ] 3. 要先储存下联通的点,在输入完val后再进行link操作 CHANGE操作 ch ...
分类:
其他好文 时间:
2019-07-21 10:25:44
阅读次数:
94
传送门 如果只有一种颜色,显然 $LCT$ 多种颜色,发现颜色不多,所以对每一种颜色建 $LCT$ 编号 $c$ 的颜色的第 $i$ 个节点在 $LCT$ 中编号 $c*n+i$ 改颜色的时候有一堆细节,具体来讲 用 $map$ 来判断两点之间是否有边并记录边的颜色,注意边 $(x,y)$ 和 $( ...
分类:
其他好文 时间:
2019-07-12 13:02:47
阅读次数:
93
很好的一道LCT题目 首先我们可以发现,题目要求的就是最小生成树上的一条树链的最长边的长度,因此我们实际只需动态维护最小生成树即可 然后我们考虑怎么动态维护最小生成树 不难发现,如果涉及在最小生成树上删边,那么这个操作将变得非常复杂,因为我们并不知道删边之后要把什么样的边补充回去才行 但是,如果我们 ...
分类:
其他好文 时间:
2019-07-10 16:57:48
阅读次数:
113
题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作。操作有4种。操作从0到3编号。点从1到n编号。 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和。保证x到y是联通的。 1:后接两个整数(x,y),代表连接x到y,若x到y已经联通则无需连接。 2:后接两个整数( ...
分类:
其他好文 时间:
2019-07-03 21:33:22
阅读次数:
134
这道题思路方面就不多讲了,主要是通过这题学一下lct维护子树信息。 lct某节点u的子树信息由其重链的一棵splay上信息和若干轻儿子子树信息合并而成。 splay是有子树结构的,可以在rotate,access的时候由儿子update到父亲,而轻儿子的信息update不上来,需要另外记一下。 记s ...
分类:
其他好文 时间:
2019-07-03 16:56:32
阅读次数:
92
"bzoj 2959: 长跑" 可以看作是这道题的加强版:https://www.luogu.org/problemnew/show/P2542 看到动态维护$Tarjan$缩点就考虑使用$LCT$,使用一个并查集$f$表示点$i$所在的点双的“标志”点是哪一个,$link$时分类讨论一下即可 然后 ...
分类:
其他好文 时间:
2019-07-03 00:12:31
阅读次数:
89
Description 点数 define fo(i,a,b) for(int i=a;i=b; i) typedef long long LL; const int N=100005; const int mo=998244353; using namespace std; int n; LL s ...
分类:
其他好文 时间:
2019-06-26 20:35:39
阅读次数:
137
SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。 而 MyISAM 表中可以快速取到表 ...
分类:
其他好文 时间:
2019-06-12 10:56:53
阅读次数:
92