6444. GDOI2020模拟01.18树高
Posted jz-597
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6444. GDOI2020模拟01.18树高相关的知识,希望对你有一定的参考价值。
题目
正解
这题也不是给人写出来的……
先不要考虑操作二。
有一种比较新奇的思路:将点的颜色挂在边上,然后搞出个边的连通块。
这些连通块的维护是很舒服的,直接上数据结构即可。
考虑边的连通块和点的连通块的关系。
假如有(x)和(y)和(z)三个点相连,(x)为(y)父亲,(y)为(z)父亲。
((x,y))和((y,z))的颜色相同,意味着(y)和(z)的颜色相同。
推广一下,我们可以发现,对于一个边连通块而言,除了根节点(需要特判是不是整棵树的根节点),其它的点的颜色都相同。
既然这个性质这么优美,操作一和操作三就可以轻松解决了。
接下来考虑操作二。
发现这题似乎没有必要用LCT,因为LCT注重维护链上的东西,而这题不需要。这题也没有必要换根。所以用ETT更加简洁一些。
考虑将一个连通块变色之后的影响。最主要的是,我们要判断变色之后,有哪些原来跟它相连的连通块可以和它合并。
假如我们能够暴力地将这些连通块一个个找出来,然后连在一起。势能分析得到,连接的次数是(O(n))级别的。
为了找到这些连通块,就要能够精准打击,每次找都会有结果。ETT的splay上对于一棵子树维护信息:对于每种颜色,是否有别的连通块连向区间内的点的边是这个颜色。同时,也对每棵点记录连向它的每种颜色的边分别有哪些。
乱搞即可……
总结
还是没代码啊……
将点权变成边权,这个套路很新颖,似乎在许多地方可以用得上。
以上是关于6444. GDOI2020模拟01.18树高的主要内容,如果未能解决你的问题,请参考以下文章