NYOJ 586 瘋牛(二分列舉 貪心)

2021-09-09 03:02:26 字數 1247 閱讀 9487

時間限制:

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

**poj 翻譯

題意:簡單的說就是給你一段長度,在這一段中給出m個點,然後在這m個點中選出k個點,讓這k個點之間相鄰兩個點的之間距離的最小值最大

思路:通過二分列舉這個最小值,然後通過貪心的思想找出滿足要求的最大的這個最小值

解析:------二分列舉 + 貪心

這道題用到了劉汝佳演算法入門經典上貪心那一節講的演算法,用二分列舉滿足條件的最大距離,

依次做相應判斷.本題不需要擔心最後求出的距離不能適應題目中的隔間間的距離,

因為二分列舉之後是按照貪心發判斷的,如果當前距離滿足要求,會繼續增大列舉的距離,

一直到無法滿足要求為止,即最後結果一定滿足是隔間間的距離 .

1 #include 2 #include 3 #include 4

5using

namespace

std;67

intn, c;

8int pos[100005];9

10bool judge(int

k)

1123}24

return

false;25

}2627int binary_search() //

二分列舉滿足條件的最大距離

2840

return left-1;41

}4243int

main()

4452

return0;

53 }

nyoj 586 瘋牛(二分 貪心)

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...

NYOJ 586 瘋牛(貪心 二分)

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...

NYOJ 586 瘋牛 二分

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...