闲扯
最近做的一些题里面用到了使用随机值来维护图的连通性和判断点对是否包含某条边,写篇博客总结一下。
TEST_20200112(Day 2) T3
题目描述
给出一个连通图,每次删掉不超过 $4$ 条边,然后询问整幅图是否连通。
Solution
正常做法:
线段树分治。
非正常解法乱搞:
先搞一颗生成树出来,然后给非树边赋一个随机权值。
然后给树边赋值,将除根结点外每个点的出边的异或值调整为 $0$ 。
每次询问时,枚举删掉的边的子集,如果存在一个子集,使得边权异或为 $0$ ,那么这个子集使得一个子图恰好与外部分开。
Code
吐槽一下这个从 std 学来的随机值是真的强,直接弄会被卡
1 |
|
共价大爷游长沙
题面
Solution
每次询问一条边是否被所有路径覆盖,我们有一个很巧妙的做法。
给每一个操作赋值,把两端的值异或上这个值,。
那么每次相当于求以 $x$ 为根节点时, $y$ 子树中的所有点权异或起来是否等于所有操作的值的异或和。
由于有动态加边、删边,所以用 $LCT$ 来维护子树信息即可。
Code
1 |
|