POJ 2456 Aggressive cows——二分查找(最大化最小值)

网友投稿 506 2022-11-28

POJ 2456 Aggressive cows——二分查找(最大化最小值)

POJ 2456 Aggressive cows——二分查找(最大化最小值)

题意:在一条数轴上已知n个点的坐标,在这n个点中选m个点,最大化m个点的最小距离

思路:二分查找最小距离,对于每个最小距离,求出在这个距离限制下最多能从n个点中选多少个点,然后与m比较,如果比m小则改变上界,反之改变下界

#include #include #include using namespace std;const int INF = 1e9 + 10;int a[100010];int main(){ int n, m; while (scanf("%d %d", &n, &m) == 2) { for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } sort(a, a + n); int L = 0, R = INF, mid; while (L <= R) { mid = (L + R) / 2; int cnt = 1, dis = 0; for (int j = 1; j < n; j++) { dis += a[j] - a[j - 1]; if (dis >= mid) { cnt++; dis = 0; } } if (cnt >= m) { L = mid + 1; } else { R = mid - 1; } } printf("%d\n", R); } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HDU 6305 RMQ Similar Sequence——笛卡尔树
下一篇:POJ 3320 Jessica's Reading Problem——尺取法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~