二分模板
2025-08-14 15:52:21
发布于:浙江
7阅读
0回复
0点赞
题目大意
最大化最近的两头牛之间的距离。
题目思路
二分答案,看每个答案是否能满足条件即可。
code
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, m, a[114514];
bool check(int x) {
int sum = 1, l = 0;
for(int i = 0; i < n; i ++) {
if(a[i]-a[l] >= x) {
sum ++;
l = i;
}
}
return sum >= m;
}
main() {
cin >> n >> m;
for(int i = 0; i < n; i ++) cin >> a[i];
sort(a, a+n);
int l = 0, r = 1e18, ans = -1;
while(l <= r) {
int mid = l+r>>1;
if(check(mid)) {
l = mid+1;
ans = mid;
} else {
r = mid-1;
}
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个