憤怒的牛 二分

2021-09-14 05:22:44 字數 1113 閱讀 4468

題目描述

農夫約翰建造了一座有n間牛舍的小屋,牛舍排在一條直線上,第i間牛舍在xi的位置,但是約翰的m頭牛對小屋很不滿意,因此經常互相攻擊。約翰為了防止牛之間互相傷害,因此決定把每頭牛都放在離其它牛盡可能遠的牛舍。也就是要最大化最近的兩頭牛之間的距離。

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

輸入

第一行用空格分隔的兩個整數n和m;

第二行為n個用空格隔開的整數,表示位置xi。

輸出

輸出僅乙個整數,表示最大的最小距離值。

樣例輸入

5 3

1 2 8 4 9

樣例輸出

3
提示

把牛放在1,4,8這樣最小距離是3

2≤n≤105 , 0≤xi≤109, 2≤m≤n

思路:

問題:求出最大的最小距離值(最大的最小或者是最小的最大一般都是二分解決)

通過二分距離來逐步得到答案  還要有一點貪心 就是第乙個點必須要使用 

使用judge函式判斷這個距離  可以放入的奶牛總數》=奶牛真實的個數

如果符合條件說明距離還可以變的更大  否則距離應該變小

ac**:(**中mid表示的是距離從l=0   r=a[n-1]-a[0] 開始 前提先排序)

#include#includeusing namespace std;

const int max=1e6;

int a[max+5],n,m;

int judge(int mid) ///判斷這個距離是不是滿足條件

}if(count>=(m-1))

return 0;

}int main()

憤怒的牛(重回基礎二分)

農夫約翰建造了一座有n間牛舍的小屋,牛舍排在一條直線上,第i間牛舍在xix ixi 的位置,但是約翰的m頭牛對小屋很不滿意,因此經常互相攻擊。約翰為了防止牛之間互相傷害,因此決定把每頭牛都放在離其它牛盡可能遠的牛舍。也就是要最大化最近的兩頭牛之間的距離。牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡...

二分和三分 憤怒的牛

為了彌補自己的二分太渣,從二分的水題做起,從我做起 題目描述 農夫約翰建造了一座有n間牛舍的小屋,牛舍排在一條直線上,第i間牛舍在xi的位置,但是約翰的m頭牛對小屋很不滿意,因此經常互相攻擊。約翰為了防止牛之間互相傷害,因此決定把每頭牛都放在離其它牛盡可能遠的牛舍。也就是要最大化最近的兩頭牛之間的距...

選牛(二分查詢)

在一條座標軸上,有n頭奶牛,第i頭奶牛的位置是xi。fj現在要選出三頭奶牛去比賽,不妨假設選擇了奶牛a,b,c。那麼必須要滿足 1 xa xb xc。2 xb xa xc xb 2 xb xa 你的任務是計算,fj總共有多少種不同的選擇?輸入格式 第一行,乙個整數n。3 n 1000 接下來有n行,...