#2#7RE,求调
  • 板块P2440 木材加工
  • 楼主kpmark
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/27 18:04
  • 上次更新2024/7/27 19:30:23
查看原帖
#2#7RE,求调
1248282
kpmark楼主2024/7/27 18:04
#include <algorithm>
#include <iostream>
#define ll long long
using namespace std;

ll n, k;
ll a[100005];

// 二分答案
ll check(ll l) {
    ll cnt = 0;
    for (ll i = 0; i < n; i++) {
        if (l < a[i]) {
            cnt += a[i] / l;
        }
    }

    return cnt - k;
}
int main() {
    cin >> n >> k;
    cin >> a[0];
    ll min = a[0];
    ll max = a[0];
    for (ll i = 1; i < n; i++) {
        cin >> a[i];
        if (min > a[i])
            min = a[i];
        if (max < a[i])
            max = a[i];
    }

    // 开始二分
    ll left = 1;
    ll right = max - 1;
    ll pre = 0;
    while (left <= right) {
        ll mid = (left + right) / 2;
        ll ret = check(mid);
        if (ret == 0) {
            pre = mid;
            left = mid + 1;
        }
        if (ret > 0) {
            left = mid + 1;
        }
        if (ret < 0) {
            right = mid - 1;
        }
    }
    cout << pre;

    return 0;
}
2024/7/27 18:04
加载中...