附加点re
查看原帖
附加点re
702821
FXTfanxueting2楼主2023/8/5 12:42
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
const int MAXN = 2e6 + 10;
int L, n, k;
int a[MAXN];
bool check(int x)
{
	int m = 0;
	for(int i=2;i<=n;i++)
	{
		if(a[i] - a[i-1] >= x)
		{
			m += (a[i] - a[i-1]) / x;
			if((a[i] - a[i-1]) % x == 0) --m;
		}
	}
	//新增路标太多了,也就是间距太大了,需要缩小 
	return m > k;
}
signed main()
{
	cin >> L >> n >> k;
	int l = -1, r = 1e9;
	for(int i=1;i<=n;i++) cin >> a[i];
	while(l + 1 < r)
	{
		int mid = (l + r) >> 1;
		if(check(mid)) l = mid;
		else r = mid;
	}
	cout << r;
	return 0;
 } 
2023/8/5 12:42
加载中...