社区讨论
找不同悬关
灌水区参与者 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 条回复,欢迎继续交流。
正在加载回复...