題目描述思路:農夫約翰建造了一座有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行,...