其他分享
首页 > 其他分享> > UOJ #750. -【UNR #6】小火车(meet-in-the-middle+抽屉原理)

UOJ #750. -【UNR #6】小火车(meet-in-the-middle+抽屉原理)

作者:互联网

考虑性质 \(2^n>p\)。显然根据抽屉原理必然存在两个子集和 \(\bmod p\) 相等。找出这两个子集然后相减就是答案。

朴素的做总共需要 check \(3^n\) 或者 \(4^n\) 对子集,取决于实现方法,就算 mim 也只能开个根号,无法通过。因此我们肯定不能从这个角度来思考。瞎随机可以拿到 60 分。这里不再赘述。

考虑正解,因为必然存在两个子集和 \(\bmod p\),因此考虑找到一个存在两个子集和 \(\bmod p=x\) 的 \(x\)。发现这是满足可二分性的,具体来说我们检查有多少个子集和 \(\in[l,mid]\),如果 \(\ge mid-l+2\) 就往左二分,否则往右二分。计算这个数量显然可以 mim。

时间复杂度 \(2^{\frac{n}{2}}·n\),由于前面一部分可以排序预处理所以不用乘两个 \(n\)。

标签:二分,UNR,750,mim,bmod,mid,middle,子集,两个
来源: https://www.cnblogs.com/ET2006/p/UOJ-750.html