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

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

单选题

题目描述

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

1 const int MAXN = 100005;
2 long long a[MAXN];
3 int n, m;
4
5 bool check(long long x){
6  long long cnt = 0;
7  for(int i = 1; i <= n; i++){
8   if(x == 0) return true;
9   cnt += a[i] / x;
10   if(cnt >= m) return true;
11  }
12  return false;
13 }
14
15 int main(){
16  cin >> n >> m;
17  long long mx = 0;
18  for(int i = 1; i <= n; i++){
19   cin >> a[i];
20   mx = max(mx, a[i]);
21  }
22
23  long long l = 1, r = mx;
24  long long ans = 0;
25
26  while(l <= r){
27   long long mid = l + (r - l) / 2;
28
29   if(check(mid)){
30    ans = mid;
31    ______________________
32   }else{
33    ______________________
34   }
35  }
36
37  cout << ans << endl;
38  return 0;
39 }

选项(单选)