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 }选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员