30分求助大佬:
查看原帖
30分求助大佬:
582167
Avengers__lsw楼主2022/1/10 20:04

是因为这题的特殊属性导致必须用二分的另一个模板么?(大于等于那边的判定要改成小于等于的判定)

#include<stdio.h>
#pragma warning(disable:4996)
const int Q = 1e+6;
int a[Q];
int check(int x,int M);
int main(void)
{
	int L, M, N,i;
	scanf("%d %d %d", &L, &M, &N);
	for ( i = 1; i <=M; i++)
	{
		scanf("%d", &a[i]);
	}
	int l = 0, r = a[--i];
	while (r>l)
	{
		int mid = (l + r) / 2;
		if (check(mid,M) >= N)r = mid;
		else l = mid + 1;
	}
	printf("%d", l);
	return 0;
}
int check(int x,int M)
{
	int k = 0;
	int new1=0;
	for (int i = 1; i <= M; i++)
	{
		if (a[i]-a[new1]<x)
		{
			k++;
		}
		else
		{
			new1 = i;
		}
	}
	return k;
}
2022/1/10 20:04
加载中...