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 #includeview code5 #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 }
洛谷 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想把...