1 条题解
-
0
数上动态规划
算法思路
设序列中的最大值为 。枚举公约数 ,其中 。
对于每个 ,扫描整个序列,将所有能被 整除的数相加,得到 。由于所有元素均为正数,这样可以得到由 的倍数组成的选择方案中的最大元素和。
将答案初始化为 ,每次用 更新答案,最后输出最大值。
注意,这些数的实际最大公约数可能大于 ,但不会影响最终答案的正确性。
正确性证明
对于任意 ,若选出了至少一个数,则这些数的实际最大公约数 满足 。因此,候选值 不超过该选择方案的真实价值,也就不会超过最优值。若没有选出任何数,则候选值为 ,同样不会超过最优值。
设最优方案的元素和为 ,最大公约数为 。这些元素都能被 整除。由于所有元素均为正数,枚举到 时,有 ,因此候选值 不小于最优值 。
综上,算法既不会高估答案,也不会遗漏最优值,因此算法正确。
复杂度分析
共枚举 个公约数,每次扫描 个元素,时间复杂度为 ,其中 。
存储序列需要 空间,除此之外只需要 的额外空间。
信息
- ID
- 723
- 时间
- 1000ms
- 内存
- 256MiB
- 题目 Rating
- 标签
- 递交数
- 14
- 已通过
- 12
- 上传者