• poj2456


    Aggressive cows
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 24979   Accepted: 11594

    Description

    Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). 

    His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?

    Input

    * Line 1: Two space-separated integers: N and C 

    * Lines 2..N+1: Line i+1 contains an integer stall location, xi

    Output

    * Line 1: One integer: the largest minimum distance

    Sample Input

    5 3
    1
    2
    8
    4
    9

    Sample Output

    3

    Hint

    OUTPUT DETAILS: 

    FJ can put his 3 cows in the stalls at positions 1, 4 and 8, resulting in a minimum distance of 3. 

    Huge input data,scanf is recommended.

    Source

    一句话题意:
    有n个牛栏,k头牛。将这k头牛放入牛栏中,如何保证牛与牛之间最小的距离最大。
    解析:
    明显的是二分算法。
    L=0;R= 最大值
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=100010;
    int n,k;
    int a[maxn];
    int check(int x){
        int cnt=1;
        int y=a[1];
        for(int i=2;i<=n;i++)
            if(a[i]-y>=x){
                cnt++;y=a[i];
                if(cnt>=k) return 1;
            }
        return 0;
    }
    int main(){
        cin>>n>>k;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        sort(a+1,a+1+n);
        int l=0,r=a[n],mid;
        while (l<r){
            mid=(l+r+1)/2;
            if(check(mid)) l=mid;
            else r=mid-1;    
        }
        cout<<l<<endl;
        return 0;
    }
  • 相关阅读:
    Android架构初探
    TinyPNG---一个压缩PNG的神站
    Android添加全屏启动画面
    如何唯一的标识一台Android设备?
    获取Android设备唯一标识码
    Android系统资源图标android.R.drawable
    Android中使用adb访问SQLite的方法
    Java 对字符串数据进行MD5/SHA1哈希散列运算
    关于Android中EditText自动获取焦点并弹出键盘的相关设置
    EditText自动换行显示内容
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/10922682.html
Copyright © 2020-2023  润新知