社区讨论

找不同悬关

灌水区参与者 10已保存回复 38

讨论操作

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

当前回复
37 条
当前快照
1 份
快照标识符
@m53ty013
此快照首次捕获于
2024/12/25 19:46
去年
此快照最后确认于
2025/11/05 01:22
4 个月前
查看原帖
70分
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int l,n,m,a[N];
bool check(int x){
	int now=0,cnt=0;
	for(int i=1;i<=n+1;i++){
		if(a[i]-a[now]<x)
			cnt++;
		else
			now=i;
	}
	if(cnt<=m)
		return 1;
	else
		return 0;
}
int main(){
	cin>>l>>n>>m;
	a[n+1]=l;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	int L=1,R=l,ans=0;
	while(L<=R){
		int mid=L+(R-L+1)/2;
		if(check(mid)){
			L=mid+1;
			ans=mid;
		}
		else
			R=mid-1;
	}
	cout<<ans;
	return 0;
}
100分
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int a[N],n,m,L;
bool check(int x){
	int now=0,cnt=0;
	for(int i=1;i<=n+1;i++){
		if(a[i]-a[now]<x)
			cnt++;
		else
			now=i;
	}
	if(cnt<=m)
		return 1;
	else
		return 0;
}
int main(){
	cin>>L>>n>>m;
	a[n+1]=L;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	int r=L,l=1,ans=0;
	while(l<=r){
		int mid=l+(r-l+1)/2;
		if(check(mid)){
			l=mid+1;
			ans=mid;
		}
		else
			r=mid-1;
	}
	cout<<ans;
	return 0;
}
我要崩了!

回复

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

正在加载回复...