How div.3 H?

灌水区

还要答复吗
by AFewSuns @ 2024-03-19 20:27:10


@[AFewSuns](/user/224336) 需要
by highkj @ 2024-03-20 15:25:26


@[highkj](/user/381053) 首先只需要选两个数。 考虑枚举 $\gcd=g$,然后把所有 $g$ 的倍数拿出来。先将所有数的按位与 $A$ 求出来,那么 $g>A+x$ 是必要的。 然后如果 $g$ 的倍数有 $\geq 21$ 个,那就做完了,因为我最多只需要从这些倍数中选取 $\log V=19$ 个就可以让对方的按位与达到最小值 $A$(因为每给对方一个数都会使得按位与的某一位变 $0$,否则没必要给对方)。 于是只需要考虑 $\leq 20$ 个数的情况,暴力枚举两个数,用 ST 表计算其他数的按位与即可。时间复杂度 $\mathcal O(n\log^2V)$。 这是我的做法,当然这题还有很多其他做法。
by AFewSuns @ 2024-03-20 17:02:26


@[AFewSuns](/user/224336) thx
by highkj @ 2024-03-20 17:10:45


|