1 条题解
-
0
二分查找最小值
#include <algorithm> #include <cstring> #include <cstdio> #define N 100010 using std:: sort; int a[N]; int n,m; int solve(int x) { int cas=0; int nx=1; for(int i=2; i<=n; i++) { if(a[i]-a[nx]>=x) { cas++; nx=i; } } return cas+1; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(int i=1; i<=n; i++) scanf("%d",&a[i]); sort(a+1, a+n+1); int l=1,r=a[n-1]-a[0],mid; while(l+1<r) { mid=(l+r)/2; if(solve(mid)>=m) l=mid; else r=mid; } printf("%d\n",l); } return 0; }
- 1
信息
- ID
- 1456
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者