88分 RE 求助
  • 板块P2440 木材加工
  • 楼主wwhOvO
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/2/2 13:18
  • 上次更新2023/11/5 03:57:22
查看原帖
88分 RE 求助
204619
wwhOvO楼主2021/2/2 13:18
#include <iostream>
#include <cstdio>

using namespace std;

long long n, k;
long long a[1000005];

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

int main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) cin >> a[i];
	
	long long l = 0, r = 100000001;
	long long mid, ans = 0;
    while (l <= r) {
        mid = (l + r) >> 1;
        if (f(mid)) ans = mid, l = mid + 1;
        else r = mid - 1;
    }
	cout << ans << endl;
	return 0;
} 

感觉是二分写法有问题,具体是那里呢?

2021/2/2 13:18
加载中...