大神们,求解

P1824 进击的奶牛

抱歉,本人对左右偏不太了解
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


|