一、应用。
二、处理方式。
1、 使用向量的思想表示关系。
2、 向量的叠加。一般先相加,如果有循环的关系,则取余。——如小胖的奇偶,奇偶性只有两种,根据奇偶合成的关系,我们把所有的偶数都统一成0,所有奇数都统一成1,规律是不会发生变化的,因此我们先相加再对2取余。——再如食物链,甲吃乙,乙吃丙,则丙吃甲,容易看出,这存在循环的关系,(1+1)%3=2刚好是1的相反向量的值,(2+2)%3=1也刚好是2的相反向量的值,容易想到,可以用0来表示关系相同。
3、 的减法。一般用加上相反向量来处理,注意有的情况下相反向量和向量是相等的,而有的时候却需要进行处理,通常是异或2^n-1这种,即每一位都取反。
4、 上可以使用补集表示法(不会),或者多开几个数组来维护关系的方法。
三、注意事项。
1、判断关系时总是要在一个三角形里操作。也就是说,要首先得到两个点的根节点,降低树的高度,如果两个点的根节点相同,则得到两条边,因此第三条边及两个点的关系便可以得到。
2、找父亲的时候,要首先把原来的父亲记录下来,再更新父亲,因为原来的父亲和根的关系还有用,也是一个三角形的关系。
3、增加关系时总是要在一个四边形里操作。也就是说,要首先得到两个点的根节点,降低树的高度,得到两条边,在加上这两个点的关系就三条边,以此来算出两个根的关系。
4、对于某些特定的,规模庞大的并查集的题目,要求我们找到一种合适的离散化的方法,为了解决空间问题,我们选择使用广义数组map,用它来存储父亲、和父亲的关系。但是注意的是,这里就不能鲁莽地将f[i]初始化为i,这会严重超时的!!!我们可以在使用的时候,判断一下,如果某一个值等于0,则将它更新为i。