P1873 EKO 砍树
题目描述
伐木工人 Mirko 需要砍
Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数
Mirko 非常关注生态保护,所以他不会砍掉过多的木材。这也是他尽可能高地设定伐木机锯片的原因。请帮助 Mirko 找到伐木机锯片的最大的整数高度
输入格式
第
第
输出格式
Solution
二分
找到第一个满足得不到 M 米木材的下标,减去 1 即可。
void solve() {
int n, k;cin >> n >> k;
vector<int>a(n + 1);
for (int i = 1;i <= n;i++)cin >> a[i];
int l = 1, r = 1e9;
while (l < r) {
int mid = l + r >> 1;
bool ok = false;
ll ans = 0;
for (int i = 1;i <= n;i++) {
if (a[i] > mid)ans += a[i] - mid;
}
if (ans < k)ok = true;
if (ok)r = mid;
else l = mid + 1;
}
cout << l - 1 << '\n';
}