数据结构——圆方树
文章平均质量分 53
无
迷蒙之雨
这个作者很懒,什么都没留下…
展开
-
[APIO2018] Duathlon 铁人两项(圆方树+树形DP)
[APIO2018] Duathlon 铁人两项 洛谷题目传送门 如果没学过圆方树的可以进入我的博客 圆方树学习记录及例题 解题思路 首先这是一道无向图计数问题,因此我们考虑在圆方树上计算 建出圆方树后,考虑如果一条路径的起点和终点已经确定,那么中点有几种选择呢? 首先,这条路径上的圆点肯定可以作为中点,其次路径上的方点连的圆点也可以是中点(因为方点代表一个点双连通分量,它可以联通) 因此对于一个路径,我们给每个点付一个权值,如果是圆点权值是1,就代表这一个点,方点的权值就是它对应的点双大小减二,这是因为它原创 2021-07-12 07:12:42 · 295 阅读 · 0 评论 -
CF487E Tourists(圆方树+树链剖分)
洛谷题目传送门 解题思路 首先Tarjan寻找点双连通分量,然后建立圆方树,每个方点存这个点双内的最小点权 将圆方树树链剖分之后,对于修改操作,将这个点连的所有方点的值更新 对于查询操作,直接查询树上两点之间路径的最小值 然后就AC了 怎么可能呢,如果一个圆点连着非常多个方点,那么时间复杂度就飞天了 正确的做法是: 建出圆方树后,每个方节点的值是它的所有子节点的最小值,而不包括父节点 可以用multisetmultisetmultiset维护每个方点的权值 那么修改操作时,只需要更新这个点和它的父节点就可以原创 2021-07-11 21:27:36 · 142 阅读 · 0 评论 -
圆方树学习记录及例题
对于一个无向连通图,我们可以通过一些操作使其变成一棵树,然后再在树上操作 这颗树就叫圆方树,具体是怎么样的呢?看下图 这是一个无向连通图 然后找到每一个点双连通分量,并在这个点双里新建一个节点,并且是方的 如图 然后去掉原来的边,并把每个方点与其点双的节点连一条边,如图 然后就形成了一棵树,这就是圆方树,可以看出圆点和方点是交替的 我们可以用方点存储对应点双的信息,然后就能用树剖,动态树之类的维护了 寻找点双可以用Tarjan算法 例题一 CF487E Tourists 例题二P4630 [APIO201原创 2021-07-11 21:14:40 · 297 阅读 · 0 评论