问题:给定两个整数数组 A 和 B。现在,在每个步骤中,我们都可以从两个数组中删除任何 2 个非互质整数。我们必须找到可以通过这些步骤删除的最大对数。
界限:
A、B 的长度 <=10 5
每个整数 <=10 9
Dinic 算法 - O(V 2 E)
Edmonds-karp 算法 - O(VE 2 )
Hopcroft–Karp 算法 - O(E sqrt(V))
到目前为止我的方法:这可以建模为具有两个集合 A 和 B 的二分匹配问题,并且可以在相应集合中的每个非互质整数对之间创建边。
但问题是图中可能有 O(V 2 ) 条边,大多数二分匹配和最大流算法对于如此大的图来说会非常慢。
我正在寻找一些可以在合理时间内解决问题的特定问题或数学优化。要通过测试用例,我最多需要 O(V log V) 或 O(V sqrt(V)) 算法。
提前致谢。