求助,总有一个测试点过不去
查看原帖
求助,总有一个测试点过不去
1494443
wdmzjhyk楼主2025/1/14 11:09
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
long long L, M, N, k;
long long s[50001];
bool check(long long x)
{
	int now = 0, count = 0;
	for (int i = 1; i <= N+1; i++)
	{
		if (s[i] - s[now] < x)
		{
			count++;
		}
		else now = i;
	}
	return count <= M;
}
long long find()
{
	int l = 0, r = L, mi;
	while (l <= r)
	{
		mi = l + (r - l) / 2;
		if (check(mi))
		{
			l = mi + 1;
			k = mi;
		}
		else r = mi - 1;
	}
	return k;
}
int main()
{
	cin >> L >> N >> M;
	s[0] = 0; 
	s[N + 1] = L;
	for (int i = 1; i <= N; i++)
	{
		cin >> s[i];
	}
	find();
	printf("%ld", k);
	return 0;
}

为什么check函数中循环i<N时Subtask #1过不去,改成i<=N后Subtask #1能过但是Subtask #0,#11过不去了

2025/1/14 11:09
加载中...