0
已解决
李锦昊
中级天翼
中级天翼
本弱**待完成代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005],ans,b[100005],k;
bool cheak(int x){
int cnt=1,last=1;
for(int i=1;i<=n;i++){
if(a[i]-a[last]<x){ //极有可能不对
cnt++;
last=i;
}
}
return (cnt<=m); //极有可能不对
}
int main(){
cin>>k>>n>>m;
a[0]=0,a[n+1]=k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=1,r=k/n;
int mid;
while(l<r){
int mid=(l+r+1)/2;
if(cheak(mid)){
l=mid;
}
else r=mid-1;
cout<<l<<" "<<r<<endl;
}
cout<<l;
return 0;
}
样例没过!
求大佬解答
本周五结贴
李锦昊在2022-03-04 17:35:30追加了内容
顶
李锦昊在2022-03-04 18:22:42追加了内容
30分代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005],ans,k;
bool b[100005];
int main(){
cin>>k>>n>>m;
a[0]=0,a[n+1]=k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=k/n;i>=1;i--){
int x=m;
memset(b,0,sizeof(b));
for(int j=1;j<=n;j++){
if(a[j]-a[j-1]<i){
x--;
b[j]=true;
if(b[j-1]==true){
b[j]=false;
x++;
}
// if(b[j-1]!=true) cout<<a[j]<<" "<<a[j-1]<<endl;
}
// else cout<<a[j]<<" ";
}
if(a[n+1]-a[n]<i&&b[n]==false) x--;
if(x>=0){
cout<<i;
return 0;
}
}
return 0;
}