gpt4 book ai didi

algorithm - 最小最大连续 k 分区的更快算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:24 26 4
gpt4 key购买 nike

我正在读这个http://www.cas.mcmaster.ca/~terlaky/4-6TD3/slides/DP/DP.pdf并且想知道是否存在时间复杂度更好的分区问题的解决方案。

来自链接:

"Suppose a given arrangement S of non-negative numbers{s1,...,sn} and an integer k. How to cut S into k or fewer ranges,so as to minimize the maximum sum over all the ranges?"

例如

S = 1,2,3,4,5,6,7,8,9

k=3

By cutting S into these 3 ranges, the sum of the maximum range (8,9) is 17, which is the minimum possible.

1,2,3,4,5|6,7|8,9

链接中建议的算法在 O(kn^2) 中运行并使用 O(kn) 空间。有没有更高效的算法?

最佳答案

好吧,显然这是因为“离题”而关闭了!?但它现在已经备份了,所以无论如何,我发现解决方案是二进制搜索答案。抱歉,我忘记了其中一个限制条件是所有整数的总和不能超过 2^64。因此令 C = 所有整数的累积和。然后我们可以使用二分法搜索答案

bool isPossible(int x)

函数如果可以将 S 分成 k 个分区且最大分区总和小于 X,则返回 true。isPossible(int x) 可以在 O(n) 中完成(通过从左到右添加所有内容,如果它超过x 创建一个新分区)。所以总的运行时间是 O(n*log(s))。

关于algorithm - 最小最大连续 k 分区的更快算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14659543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com