学习 Top Cluster 树分块(未完成版)
前言
- 为了推一道题还要去学一下树分块。。。
- upd on 2 hours later:斯,学树分块挑了个最难的学。。。
- 参考论文:2021 年信息学奥林匹克中国国家集训队论文:周欣《浅谈一类树分块的构建算法及其应用》
树收缩
- 对于这种树分块,我们需要先学树收缩理论
- 树收缩,
就是把树收缩,在 \(Top\>\>Tree\) 里极为常用但是msjing没学过 - 斯,好像必须学 \(Top\>\>Tree\)
- 树收缩有两个操作,\(compress\) 和 \(rake\)
\(compress\)
- 对于一个出度为 \(2\) 的点 \(x\),其连向的点为 \(y\) 和 \(z\),那我们可以将 \(y - z\) 连边,将 \(x,x - y,x - z\) 的信息全部统计到 \(y - z\) 边里,删去 \(x,x - y,x - z\)

- trdraw 神中神
\(rake\)
- 对于一个度数为 \(1\) 的点 \(x\),与其相连的点为 \(y\),且 \(y\) 的度数大于 \(1\),\(y\) 有一个临点 \(z\),那我们把 \(x,x - y\),的信息全部统计到 \(y - z\) 边里去,删去 \(x,x - y\)

- 现在讲完了树收缩的操作,我们发现任何一棵树都可以用树收缩来缩成两个点加一条边

簇
- 基于树收缩,我们有关于簇的定义
- 不过在这之前,我们可以先探讨一下树收缩过程中的一个边包含的信息
- 还是那上面的图说

- 紫边包含了原树中框的所有信息,我们发现框住的部分是联通的,我们发现一个收缩的树的每一条边对于原树来说都是一个联通子图,我们称这样的联通子图为簇
- 但是我们再看看上图的紫框,你会发现 \(1 - 2\) 被框分割开了,\(2\) 不被簇包含,这样的点我们称为端点,被簇包含的点称为内点,被簇包含的边称为内边
一个树簇(\(cluster\))是树上的一个连通子图,有至多两个点和全树的其他位置连接
这两个结点被称做界点(\(boundary\>\>node\)),不是界点的点被称做内点(\(internal\>\>node\))
—— \(from\>\>thesis\)
- 对于两个端点的路径称之为簇路径
这两个界点之间的路径被称做簇路径(\(cluster\>\>path\))
—— \(from\>\>thesis\)
- 对于原树的所有边,由于只包含自己的信息,称为基簇,对于最后收缩完成的那一条边,称为根簇
- 你会发现上面提到的树收缩其实就是簇的合并
- 我们发现簇的合并会产生一个二叉树,节点表示簇,其儿子表示进行 \(compress/rake\) 操作的两个簇,这样的二叉树称为 \(Top\>\>Tree\)
- 艹我把画的图擦了

- 不过 \(Top\>\>Tree\) 以后再说,我们先搞树分块
树分块(未完成)
- 终于开始树分块了。。。
- 学会了树收缩,树分块就很好弄了
- 大家一直在寻找一个在树上做分块的方式时复杂度正确,但是要么被卡,要么复杂度劣,所以介绍一种基于树收缩理论的分块方式:\(Top\>\>Cluster\) 树分块
- 这好像是最优的树分块
- 接下来就是读论文环节了,建议自己读,我就不粘论文了
- sbmqwm:你这和没讲有啥区别
- msjing:读懂了再来,先去学树上撒点的树分块,这个有点难,对了你放多久
- sbmqwm:明天走
后话
- 欸woc学错了。。。这个太难了。。。
$\mathscr{msjing}$

浙公网安备 33010602011771号