社区讨论

40分,剩下Re求dalo帮忙

P2678[NOIP 2015 提高组] 跳石头参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi6y3bh8
此快照首次捕获于
2025/11/20 12:42
4 个月前
此快照最后确认于
2025/11/20 12:42
4 个月前
查看原帖
CPP
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int N=100005;
long long L, n, m, a[N];

bool ok(int mid)
{
	int num=0, last=0;;
	for(int i=1; i<=n; i++)
	{
		while(a[i]-a[last]<mid)
		{
			num++;
			i++;
		}
		if(num>m) return 0;
		last=i;
	}
	if(L-a[last]<mid)
	{
		int i=last;
		while(n-a[i]< mid) i--, num++;
		if(num>m) return 0;
	}
	return 1;
}

int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	cin>>L>>n>>m;
	for(int i=1; i<=n; i++)
		scanf("%lld", &a[i]);
	long long l=0, r=L, mid;
	while(l<=r)
	{
		mid=(l+r)>>1;
		if(ok(mid)) l=mid+1;
		else r=mid-1;
	}
	cout<<l-1<<endl;
	return 0;
}




下载错误数据本机测试正确,可是上交RE, 感觉数组也没开小....

回复

1 条回复,欢迎继续交流。

正在加载回复...