30| 木材加工

代码实现

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1e5 + 10;
int n, k, max_len;
int a[N];

// 计算长度为mid时,能切出的段数
int check(int mid) {
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        cnt += a[i] / mid;
    }
    return cnt;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> k;
    max_len = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        max_len = max(max_len, a[i]);
    }

    // 特殊情况:如果连1cm都切不出k段,直接输出0
    if (check(1) < k) {
        cout << 0 << endl;
        return 0;
    }

    // 二分查找最大的l
    int l = 1, r = max_len;
    while (l < r) {
        // 注意:避免死循环
        int mid = (l + r + 1) >> 1;
        if (check(mid) >= k) {
            // 如果能切出至少k段,说明可以尝试更大的长度
            l = mid;
        } else {
            // 否则,必须减小长度
            r = mid - 1;
        }
    }
    // 循环结束时,l == r,就是最大的可行长度
    cout << l << endl;

    return 0;
}
相关推荐
卷无止境10 小时前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
_清歌11 小时前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局11 小时前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象11 小时前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法
统计实现局11 小时前
对称不定分解(Bunch-Kaufman):为什么 Cholesky 不够用
算法
统计实现局11 小时前
dqrsl 拆解:拿着 QR 结果能算出哪 5 种东西
算法
卷无止境11 小时前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
统计实现局11 小时前
为什么 Cholesky 求逆比 Gauss-Jordan 快一倍——行列式溢出防护详
算法
To_OC1 天前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode