POJ 2456 Aggressive cows(二分),poj2456

來源:互聯網
上載者:User

POJ 2456 Aggressive cows(二分),poj2456

題目連結:http://poj.org/problem?id=2456

題意:有一排n個牛舍,座標分別為xi,有m頭牛,希望儘可能把他們之間分開,求他們之間最近的兩頭牛之間的距離最大可以拉到多少。這是二分中最大化最小值的題目,英文的題目又最大又最小有的人不易理解。

思路:顯然兩頭最近的牛的距離太大將沒有一種方式安置在牛舍中,兩頭最近的牛距離越小就越能放置在牛舍中,所以用把答案二分出來,每個mid要類比放置暴力下可不可以放得下。

//532K188MS#include<cstdio>#include<iostream>#include<algorithm>#define inf 1000001000using namespace std;int n,m;int a[100100];bool ok(int x){    int cnt=1;    int tmp=a[1];    while(cnt!=m){        tmp+=x;        int *p=lower_bound(a+1,a+1+n,tmp); //這裡不需要用,只不過練習下這個函數。        if(p==a+1+n) return false;        tmp=*p;        cnt++;    }    return true;}int main(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++){        scanf("%d",&a[i]);    }    sort(a+1,a+n+1);    int lb=0,ub=inf;    while(ub-lb>1){        int mid=(lb+ub)/2;        if(ok(mid)){            lb=mid;        }        else ub=mid;    }    printf("%d\n",lb);    return 0;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.