使用 Python 最大化桶中球之间的最小力的程序

假设我们有几个桶和 x 个球。如果将球放入桶中,其中会产生一种特殊的力,我们必须找到一种方法来最大化两个球之间的最小力。在位置 p 和 q 的桶中两个球之间的力是 |p - q|。给我们的输入是包含桶位置和球数 x 的数组。我们必须找出它们之间的最小力。

因此,如果输入类似于 pos = [2, 4, 6, 8, 10, 12], x = 3,那么输出将为 4。

可以将球放入 12 个桶的阵列中的给定位置。这三个球可以放在位置 4、8 和 12,它们之间的功率将为 4。这个值不能再增加。

示例

让我们看看以下实现以更好地理解 -

def solve(pos, x):

   n = len(pos)

   pos.sort()

   def ball_count(d):

      ans, curr = 1, pos[0]

      for i in range(1, n):

         if pos[i] - curr >= d:

            ans += 1

            curr = pos[i]

      return ans

   left, right = 0, pos[-1] - pos[0]

   while left < right:

      mid = right - (right - left) //2

      if ball_count(mid) >= x:

         left = mid

      else:

        right = mid - 1

   return left

print(solve([2, 4, 6, 8, 10, 12], 3))

输入

[2, 4, 6, 8, 10, 12], 3
输出结果
4

以上是 使用 Python 最大化桶中球之间的最小力的程序 的全部内容, 来源链接: utcz.com/z/363227.html

回到顶部