poj 2456 瘋牛 (二分)

2021-07-15 16:31:03 字數 914 閱讀 6670

原題

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:4 描述

農夫 john 建造了一座很長的畜欄,它包括n (2 <= n <= 100,000)個隔間,這些小隔間依次編號為x1,...,xn (0 <= xi <= 1,000,000,000).

但是,john的c (2 <= c <= n)頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡,他們就要發生爭鬥。為了不讓牛互相傷害。john決定自己給牛分配隔間,使任意兩頭牛之間的最小距離盡可能的大,那麼,這個最大的最小距離是什麼呢?

輸入

有多組測試資料,以eof結束。

第一行:空格分隔的兩個整數n和c

第二行——第n+1行:分別指出了xi的位置

輸出每組測試資料輸出乙個整數,滿足題意的最大的最小值,注意換行。

樣例輸入

5 312

849

樣例輸出

3

題意:往n個牛舍放m個牛,盡可能的讓兩頭牛之間距離遠,問安排好後最近的兩頭牛的距離。

題解:所求為任意的牛的間距都不小於d.

1,對牛舍位置排序。

2.第一頭牛放入x0

3.第i頭放入xj的話,第i+1頭就要放入滿足xj+d<=xk的最小的xk處。

**:#include#includeusing namespace std;

int n,m;

int a[100010];

bool search(int x)

} return false;

}int main(){

int l,r,mid;

while (scanf ("%d %d",&n,&m)!=eof){

for (int i=0;i

poj2456(二分搜尋)

題意 n間牛舍,m頭牛,最近的兩頭牛的距離為d,求d的最大值 key 二分搜尋。從0 無窮大中搜尋符合要求的值。二分搜尋 include include include include using namespace std const int maxn 1e5 int n,m int inf 1e...

POJ2456 二分搜尋

poj2456 aggressive cows 題意 有n間牛舍,牛舍被排在一條線上,第i號牛舍在xi的位置。但是他的m頭牛對小屋很不滿意,因此經產互相攻擊。為了防止牛之間互相傷害,因此決定把每頭牛都放在離其他牛盡量遠的牛舍。也就是要最大化最近的兩頭牛之間的距離。關於最小值最大化或者最大值最小化的問...

POJ 2456 二分 貪心

poj 2456的題目鏈結 emm 開始讀了有點沒讀懂,實際上大概就是告訴你,給你n個牛棚,每乙個牛棚都有它的編號,再給你c頭牛,你現在就要把這c頭牛全部丟到牛棚裡面,求出最小的兩頭有牛的牛棚編號差值中的最大的那個。這個有點繞,大概就是,把c頭牛丟到n個牛棚裡面,有很多種丟法,但每次,兩兩有牛的牛棚...