抱歉,本人对左右偏不太了解
by xzy_caiji @ 2023-10-14 16:18:22
`check` 函数的问题
by lianchanghua @ 2023-10-14 16:23:18
改成:
```cpp
#include<bits/stdc++.h>
using namespace std;
const long int N=1e5+10;
int a[N];
int n,c;
bool check(int s){
int cnt=1;
int t=a[1];
for(int i=1;i<=n;i++){
if(a[i]-t>=s){
cnt++;
t=a[i];
}
}
if(cnt>=c) return 1;
else return 0;
}
int main(){
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
int l=1,r=a[n]-a[1];
while(l<r){
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l;
return 0;
}
```
by lianchanghua @ 2023-10-14 16:25:00
@[zhnagjiahan123](/user/983667)
by lianchanghua @ 2023-10-14 16:25:46
# 小伙子,你这个变量有问题,希望我的代码能帮助你
```
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100010],ans;
bool check(int x)
{
int d=a[1],sum=1;
for(int i=2;i<=n;i++)
{
if(a[i]-d>=x)
{
sum++;
d=a[i];
}
}
return sum>=k;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int l=1,r=1e9;
sort(a+1,a+n+1);
while(l<=r)
{
int m=l+r>>1;
if(check(m))
{
ans=m;
l=m+1;
}
else
{
r=m-1;
}
}
cout<<ans;
return 0;
}
```
by wangzien @ 2023-10-14 16:26:10
谢谢,各路大神
by Zjh_abcdbt_rnfmabj @ 2023-10-14 17:05:42