洛谷 二分搜尋 進擊的奶牛

2022-06-19 03:57:08 字數 1075 閱讀 8260

farmer john建造了乙個有n(2<=n<=100,000)個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,...,xn (0<=xi<=1,000,000,000)。

他的c(2<=c<=n)頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把這些牛安置在指定的隔間,所有牛中相鄰兩頭的最近距離越大越好。那麼,這個最大的最近距離是多少呢?

第1行:兩個用空格隔開的數字n和c。

第2~n+1行:每行乙個整數,表示每個隔間的座標。

輸出只有一行,即相鄰兩頭牛最大的最近距離。

input

5 3

1 2

8 4

9

求最大距離中的最小值。

通過推測,第一只奶牛一定在第乙個棚子裡,他們中間的最大距離為 a[n]-a[1],最少有兩隻奶牛,最大距離為牛棚的兩端。

當然這是最極限的情況,基本不可能發生。

另乙個極限情況是奶牛都擠在一起。最小距離為1.

從1到a[n]-a[1] 開始查詢,首先是中間值開始找,如果符合條件,就中間值往後,不符合就中間值之前。

符合條件:

第一只牛在第乙個棚子,第二隻牛至少在 上乙隻牛+m 位置的棚子裡。更新上乙隻牛的位置。

最後求最多能放多少隻牛。

如果牛的數量大於 c (現有牛的數量)  那就符合條件。

1 #include2 #include3 #include4 #include

5 #include6 #include7

using

namespace

std;

8int

n, c;

9int a[100010

];10

bool judge(int

x)1120}

21if (ans >= c) return1;

22return0;

23}24int

main()

2537 cout << r <

38return0;

39 }

view code

洛谷 1824 進擊的奶牛 二分

題目鏈結 寫這道題是為了記錄一下二分的模板,這種求最大中的最小比較適合用二分。面對這種最大中的最小,有時候會犯暈,到底是最大還是最小。這裡的關係是 我們二分中的mid是假設的最大值,如果這個mid成立,那說明他一定是比真正的最小的最大值大的,所以我們往小了找,簡而言之,最大是假設的mid的屬性,最小...

進擊的奶牛(二分查詢)

farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把這些牛安置...

洛谷 P1842 進擊的奶牛 二分法

題目描述 farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把...