
重构树
C202044zxy
这个作者很懒,什么都没留下…
展开
-
[NOI2018] 归程
一、题目 点此看题 二、解法 先弄清楚本题要求什么,实际上那个到111的距离就是个摆设,因为我们可以直接求dijkstra\tt dijkstradijkstra,那么问题就变成了 保留水位线大于ppp的边,uuu所在块连通性是怎样的,我们只需要把这个维护出来就行了。 第一种显然的思路是可持久化并查集,太麻烦了。kruskall\tt kruskallkruskall重构树可以很好的解决这个问题,想象我们需要的边只可能是最大生成树上的边,如果我们在跑生成树的时候构建重构树,那么就具有下列性质: 点代表的是原创 2020-10-27 21:11:39 · 234 阅读 · 0 评论 -
CF1416D Graph and Queries
一、题目 点此看题 二、解法 删边有一个经典的套路就是变成加边离线,但是操作111必须要按照时间顺序来,蛋疼。 这时候就要介绍一下kruskal\tt kruskalkruskal重构树(以前我还不知道有这个东西),在合并来个联通块的时候我们新建一个点连接这两个合并点的根,就建成了重构树。 离线的时候可以建出我们的重构树,因为重构树一个重要的性质就是新建点的子树代表了某个时刻这些点是连在一起的。询问的时候我们找到代表当时联通性的这个祖先,怎么找呢?我们把联通的时间放在这个祖先上,满足联通时间≥\geq≥当前原创 2020-10-11 16:16:44 · 232 阅读 · 0 评论