直接对n进行二分答案的疑惑
查看原帖
直接对n进行二分答案的疑惑
881619
Qiu_q楼主2024/8/12 17:33

为什么不能直接对n进行二分? 部分求最小的n代码如下:

bool judge(long long m)
{
	int p = K;
	vis = 0;
	for (int i = 1; i <= L; i++) {
		vis += x[i];
		if (vis >= m) {
			vis = 0;
			p--;
		}
		if (vis < 0)vis = 0;
	}
	if (p == 0)return true;
	else return false;
}
long long mn(long long l, long long r)
{
	long long mid, ans = 0x3f3f3f3f3f3f;
	while (l <= r) {
		mid = (l + r) / 2;
		if (judge(mid)) {
			r = mid - 1;
			ans = min(ans, mid);
		}
		else l = mid + 1;
	}
	return ans;
}
2024/8/12 17:33
加载中...