1 条题解
-
0
本题二分答案
二分查找每一个可能的
判断是否符合所有牛都可以住下
不符合就让左移,符合就让右移并更新显而易见,最后一定是最优结果
#include<bits/stdc++.h> using namespace std; const int N=1e5+7; int n,c,dis[N]; bool check(int ds){ int cnt=1,place=0; for(int i=1; i<n; i++){ if(dis[i]-dis[place]>=ds){ place=i; cnt++; } } if(cnt>=c)return true; return false; } int main(){ cin>>n>>c; for(int i=0; i<n; i++) cin>>dis[i]; sort(dis,dis+n); int l=0,r=dis[n-1]-dis[0],ans=0; while(l<r){ int mid=l+(r-l)/2; if(check(mid))ans=mid,l=mid+1; else r=mid; } cout<<ans; return 0; }
信息
- ID
- 5879
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 19
- 已通过
- 11
- 上传者