随笔分类 -  数据结构—LinkCutTree

摘要:"Link" Solution 考虑用$LCT$维护颜色。每一个$splay$维护的是两两不同的颜色。 第一个操作可以实际上就是$access$操作。 第二个操作问路径上的颜色种类数。第三个问子树内颜色种类的$max$。 因为是静态树,不能再把路径$split$出来了。考虑差分回答:$ans=cnt 阅读全文
posted @ 2020-01-03 15:11 Fruitea
摘要:"Link" Solution 首先不能看错题。题目里有句话: 子节点的标号为上一个 0 号操作叶子标号加 1 。 它是站在 全局0号操作 的角度的,比如上一次在$[l_0,r_0]$长了一个编号为$i$的节点,这一次0操作是在$[l,r]$,那么长出的节点应该是$i+1$。这样意味着某个编号的节点 阅读全文
posted @ 2020-01-03 14:41 Fruitea
摘要:"Link" Solution LCT维护边双的裸题。每次的答案是路径上边双数量 1。 维护边双可以用并查集维护,每次操作就直接作用在边双的代表元素上就行了。因为怕自己漏掉一些$find()$,导致没有在代表元素上操作,干脆就~~丧心病狂~~地在进入任意函数的时候都$find()$一遍(反正复杂度也 阅读全文
posted @ 2020-01-01 16:02 Fruitea
摘要:"Link" Solution 求两端点的子树大小然后相乘。 可以想到直接断边然后两边都$makeroot$一下。答案就是根节点的$size$。 但是怎么维护$size$呢?实子树大小可以直接由两个实儿子得到。但是虚子树不行。所以可以对每个点多维护一个$sv[]$,表示这个节点的虚子树大小总和。 那 阅读全文
posted @ 2020-01-01 10:32 Fruitea
摘要:"Link" Solution 感觉自己做完全靠蒙和猜,尽管是正解但并不知道为什么。看了题解才知道原来是生成树满足这个性质。 暴力可以枚举$max\{a\}$,然后在此条件下找$max\{b\}$最小的$1$到$n$的路径。 优化可以参照kruskal的思想。 先把所有边按$a_i$从小到大排序。维 阅读全文
posted @ 2020-01-01 10:13 Fruitea