测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A60996. 给定 n 根木头,第 i 根长度为 a[i] 。要切成不少于 m 段等长木段,求最大可能长度,则横线上应填 写( )。1 def check(a, m, x)

单选题

题目描述

给定 n 根木头,第 i 根长度为 a[i] 。要切成不少于 m 段等长木段,求最大可能长度,则横线上应填 写( )。

1 def check(a, m, x):
2  cnt = 0
3  for length in a:
4   if x == 0:
5    return True
6   cnt += length
7   if cnt >= m:
8    return True
9  return cnt >= m
10
11 def main():
12  import sys
13  input = sys.stdin.read().split()
14  idx = 0
15  n = int(input[idx])
16  idx += 1
17  m = int(input[idx])
18  idx += 1
19
20  a = []
21  mx = 0
22  for _ in range(n):
23   num = int(input[idx])
24   idx += 1
25   a.append(num)
26   mx = max(mx, num)
27
28  l = 1
29  r = mx
30  ans = 0
31
32  while l <= r:
33   mid = l + (r - l) // 2
34    if check(a, m, mid):
35     ans = mid
36     _______________
37    else:
38     _______________
39
40  print(ans)
41
42 if __name__ == "__main__":
43  main()

选项(单选)