二进制下传优化AND连边:UOJ176
二进制下传优化AND连边:UOJ176
本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/135106721
https://vj.imken.moe/contest/600665#problem/E
一个朴素思路是枚举 ,然后再枚举 ,如果 不在一起,则连一条边。
考虑优化。如果 的交集更大,则不是 。所以一个思路是取出 所有0的位置,然后继续枚举子集,划分成两个子集,重新或上 。此时我们找出来的一定两个数与出来一定是 。
但是还可以继续优化。我们可以双向奔赴。或者应该是我们重新考虑一下,我们现在枚举了 0集合的两个子集 ,满足 ,那么 之前已经合并在一起了,然后我们会先拿 去和一个 合并,再拿 和一个 合并,这样子很浪费。于是我们可以考虑下放思路,比如把 下放到 。当然我们也不用枚举子集来下方,我们按位枚举下放即可。
我们可以判断一下。如果下放的时候是空的,我们直接下放。如果非空,我们就不用下放了。因为我们 是从大往小合并的,我们已经肯定在之前进行了合并了,那我们现在就没必要合并了。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhangxixi的博客!




