华华给月月准备礼物

华华给月月准备礼物

https://ac.nowcoder.com/acm/problem/23049

题意

有N个给定长度的木棍,华华想得到K条长度(L)相同的木棍(给定的木棍可裁剪),最大化L。

思路

容易想到可以二分长度,对于每个长度,暴力check一下能不能裁成大于等于K条木棍。

复杂度

代码

#include<bits/stdc++.h>
using namespace std;

const int maxn = 2e5 + 10;

int n, k;
int a[maxn];

bool check(int x){
    int ans = 0;
    for(int i = 0; i < n; i++){
        ans += a[i] / x;
        if(ans >= k)
            return 1;
    }
    return 0;
}

int main()
{
    int l = 0, r = 0;
    cin >> n >> k;
    for(int i = 0; i < n; i++){
        cin >> a[i];
        r = max(r, a[i]);
    }
    while(l < r){
        int mid = (l + r + 1) >> 1;
        if(check(mid)) l = mid;
        else r = mid - 1;
    }
    cout << l << endl;
    return 0;
}
全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务