AT_abc328_f [ABC328F] Good Set Query 题解

分析

考虑并查集。

对于 \(a_i,b_i,d_i\),若 \(a_i,b_i\) 在之前的满足要求的操作中,\(a_i,b_i\) 不在同一个集合里,则在之前 \(X_{a_i},X_{b_i}\) 的相对差值是可以任意改变的。令 \(k=X_{a_i}-X_{b_i}\),则我们需要将 \(a_i\) 所在集合中所有元素的值增加 \(d_i-k\)。然后将 \(a_i,b_i\) 所在集合合并。

很显然,对于将集合中所有元素增加一定值再与另一个集合合并的操作,可以按秩合并修改两个集合中包含元素数量少的那个。这个暴力处理即可。

同理,在 \(a_i,b_i\) 在同一个集合里时,由于其相对差值已经确定,只需要看 \(X_{a_i}-X_{b_i}\) 是否与 \(d\) 相等。

代码

Link.

posted @ 2024-03-07 13:04  harmis_yz  阅读(13)  评论(0)    收藏  举报