动态树分治
动态点分治
动态点分治用来解决 带点权/边权修改 的树上路径信息统计问题。
点分树
回顾点分治的计算过程。
对于一个结点
对于一个子树中简单路径的计算,我们选择一个分治中心
可以证明,当我们每次选择连通块的重心作为分治中心的时候,点分树的深度最小,为
由于树的形态在动态点分治的过程中不会改变,所以点分树的形态在动态点分治的过程中也不会改变。
下面给出求点分树的参考代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
实现修改
在查询和修改的时候,我们在点分树上暴力跳父亲修改。由于点分树的深度最多是
在动态点分治的过程中,需要一个结点到其点分树上的祖先的距离等其他信息,由于一个点最多有
在动态点分治的过程中,一个结点在其点分树上的祖先结点的信息中可能会被重复计算,这是我们需要消去重复部分的影响。一般的方法是对于一个连通块用两种方式记录:一个是其到分治中心的距离信息,另一个是其到点分树上分治中心父亲的距离信息。这一部分内容将在例题中得到展现。
求出点分树,对于每个结点
我们可以根据上面的定义维护
现在我们来看一下,当我们反转一个点的颜色时,
假如我们要反转结点
参考代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
|
我们用动态开点权值线段树记录距离信息。
类似于上题的思路,对于每个结点,我们维护线段树
在本题中,所有查询和修改都需要在点分树上对所有祖先进行修改。
以查询操作为例,如果我们要查询距离结点
在进行修改操作时,我们要同时维护
参考代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
|
本页面最近更新:2023/2/18 07:57:07,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:countercurrent-time, Enter-tainer, H-J-Granger, Henry-ZHR, hsfzLZH1, Ir1d, kenlig, ksyx, Menci, NachtgeistW, ouuan, sshwy, StudyingFather, SukkaW, woshiluo
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用