algorithm - gcd的最大总和
问题描述
有两个自然数数组。有必要使用排列来计算 GCD 的最大总和。
例如:
A = [1,3,5,7,9]
B = [15,20,30,40,50]
我们可以得到 GCD 的最大总和,例如,通过以下混合:
这个测试的答案是 13. (3+3+5+1+1)
数组的长度等于N
。并且N
可以从 1 到 200。
我试图暴力破解所有组合,但这样的解决方案不符合时间线
请告诉我解决这个问题的算法。
数组中的数字可以是 1 到 10^16。
解决方案
这是我的方法:
首先让我们创建一个加权二分图,数组 A 的元素将属于左侧,数组 B 的元素 - 右侧,并且某些边的权重
a->b
是gcd(a,b)
现在问题被简化为最优分配问题,可以用各种众所周知的方法来解决,如 Min-Cost-Max-Flow、匈牙利算法等。
推荐阅读
- python - 在 Jupyter Notebook 中运行时,Python 脚本中的 Matplotlib 绘图未显示在输出中
- neo4j - 请求 cypher neo4j 帮助正则表达式数字美元
- angular - Angular 链式方法中的异常处理?
- javascript - Kleopatra:解密失败:无效数据
- python-3.x - 使用beautifulsoup在我们有div标签后跟听者标签的地方提取内容
- glpk - GLPK 中是否有最大可变大小?
- vba - 使用 VBA 重命名文件夹
- php - Laravel 5.8.16 类 'Illuminate\Queue\QueueManager' 未找到错误
- c++ - 阵列-通过二级阵列循环
- gcc - 制造(未指定目标)