zoukankan      html  css  js  c++  java
  • POJ 2456 Agressive cows(二分)

    POJ 2456 Agressive cows

    农夫 John 建造了一座很长的畜栏,它包括N (2≤N≤100,000)个隔间,这 些小隔间的位置为x0,...,xN-1 (0≤xi≤1,000,000,000,均为整数,各不相同).

    John的C (2≤C≤N)头牛每头分到一个隔间。牛都希望互相离得远点省得 互相打扰。怎样才能使任意两头牛之间的最小距离尽可能的大,这个最 大的最小距离是多少呢

    思想:二分,首先把输入的数据进行从小到大排序,再由最短距离为1,最长距离为(a[n-1] - a[0] + 1 - c) / (c - 1) + 1进行二分测试即可

    代码:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define N 100000+5
    int a[N];
    int main() {
        int n, c;
        scanf("%d%d", &n, &c);
        for(int i = 0; i < n; i++) scanf("%d", &a[i]);
        sort(a, a+n);
          int L = 1, R = (a[n-1] - a[0] + 1 - c)/(c-1) + 1;
          int mid, ans;
          while(L <= R) {
              mid = L + (R - L)/2;
              int i = 1, count = 1, pre = 0;
            while(i < n && count < c) {
                while(i < n && a[i] - a[pre] < mid) i++;
                if(i < n) count++;
                pre = i;
                i++;
            }
            if(count < c) {
                R = mid - 1;        
            } else {
                ans = mid;    
                L = mid + 1;
            }    
        }
        printf("%d
    ", ans);
        return 0;
    }
    作者:kindleheart
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Django drf 功能组件
    Django drf 视图家族
    Django drf初级
    Django drf序列化器 Serializer
    VUE 全整理
    Django Xadmin的安装方式
    python virtualenv虚拟环境搭建
    版本控制器:操作流程
    版本控制器:GIT线上操作
    《剑指offer》---跳台阶问题
  • 原文地址:https://www.cnblogs.com/kindleheart/p/9408663.html
Copyright © 2011-2022 走看看