帮忙解答一下关于二分条件的问题
查看原帖
帮忙解答一下关于二分条件的问题
653210
LJCzzzzZ楼主2022/2/20 13:34
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main()
{
	int n, m,mi=100000100;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		mi = max(a[i], mi);
	}
	int l = 1, r = mi,mx=0;
	while (l < r)
	{
		int mid = (l + r) / 2;
		int ans = 0;
		for (int i = 1; i <= n; i++) ans += a[i] / mid;
		if (ans >= m) 
			l = mid + 1;
		else 
			r = mid;
		//cout << l << " " << r << " " << ans << endl;
	}
	cout << l-1;
// while循环最后是 l==r==115
//为什么115减1就对了,且115段数为6
//为什么115-1就能保证段数变成7

}

2022/2/20 13:34
加载中...