Hack 数据 WA 了
查看原帖
Hack 数据 WA 了
814343
bc2_cryeggy楼主2022/12/29 16:16
#include<bits/stdc++.h>
using namespace std;
int L, n, k, a[100010], l, r;

bool check(int x)//检查是否合法 
{
	int sum = 0;
	for (int i = 0; i <= n; i++)
	{
		if (a[i+1] - a[i] > x)//如果另两个路标的距离超过了 mid,就在中间添路标 
		{
			sum += (a[i+1] - a[i]) / x;//那么路标就建造距离除以 mid 个,使得空旷指数越大 
			if(!((a[i+1] - a[i]) % x)) --sum;//如果能整除 mid,就代表重合了,减一个路标 
		}
		if (sum > k) return false;//如果路标数量超过了规定那一定不合法 
	}
	return true;
}

int main()
{
	cin >> L >> n >> k;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}	
	a[n+1] = L;
	r = 10000001;//r 赋初值 
	while (l < r)
	{
		int mid = (l + r) / 2;
		if (check(mid)) r = mid;//如果合法则答案更小 
		else l = mid + 1;//否则答案更大 
	}
	cout << l;
	return 0;
}
2022/12/29 16:16
加载中...