【CF1656H】Equal LCM Subsets
题意
给定集合 A 和 B,从中选择两个子集 A′⊆A,B′⊆B 满足 lcm(A′)=lcm(B′) 。
满足 ∣A∣,∣B∣≤103,A,B≤4×1035。
思路
考虑将数 Ai 分解为 j=1∏kpjαj,其中 p∈prime。如果对于一个 pj 的 αj 大于 B 中所有的 pj 的 αj,那么 Ai 必须被删除,对 B 也同理。
通过上面的分析显然可以得到在满足一下情况时才会将 Ai 删除:
i=1gcdmgcd(Ax,Bi)Ax>1
因为需要支持将 Bi 进行单点删除,所以可以使用线段树进行快速维护。具体的,线段树维护 gcd(Ax,Bi)Ax 的值,时间复杂度为 O(n2(logW+logn))。
code