洛谷:P1621:集合


洛谷:P1621:集合

Table of Contents

题目

P1621:集合

分析

这还是一个并查集的题目。分析样本数据可以发现,并不是找GCD。样本中开始p=3,在[10, 20]这个区间中,12/15/18都可以被3整除,归并;下一个p=5,此时10/15/20也可以归并——注意这是要归并到同一个集合中去,而不是另开一个集合。

有了这个基本思路后,就可以结合筛法先找到[a, b]之间的所有大于等于p的质数;遍历[a, b]间所有这些数,凡是是p的倍数的都进行归并。而无法归并的自然就独自成组了。

答案

思考

注意:这里的区间是[a, b],而parent数组常规是0基的,所以在归并时,有一个偏移量的调整:

for (int j = start + prime; j <= b; j += prime)
{
    unite(start - a, j - a);
}

上一篇 下一篇