线上OJ: 一本通:1386:打击犯罪(black) 核心思想: 1、如果按照题意,从1~k的顺序进行删除(枚举),则每次枚举完都要重置并查集,比较麻烦。 2、考虑逆向思维, 不从1 ~ k 顺序删除,而是从 n ~ k 逆序往图中添加。 a. 如果添加到 k 时,最大集合的元素数量不超过 n/2 ,则说明k还可以继续减小 b. 如果添加到 k 时,最大集合的元素数量开始超过 n
这道题思路很巧妙。 我们先假设所有的犯罪团伙都被打击掉了, 那么此时我们重新从 n − > 1 n->1 n−>1 复活犯罪团伙(也就是将它们并在一起)。 当我们发现无论怎么并,犯罪团伙的危险程度都 > n / 2 >n/2 >n/2时,就停止并操作。 此时我们直接输出 i i i 即可。( i i i 为当前被打击掉的团伙) 代码: #include<iostream>#inclu