P1824 進擊的奶牛 (二分)

2021-08-27 08:36:36 字數 847 閱讀 9600

像這種求最大最小值,最小最大值得問題都是典型的二分答案題,二分答案的主要難點在於juge()函式,此題下面給出了兩個不同思路的juge函式。

要注意的是如何根據所列舉的答案來將隔間分隔,因為求的是最大的最近距離,這個距離要是每一次分隔距離中最短的。接下來分析,假設隔間的座標沒有規定在哪的話,那麼什麼時候最近距離最大呢?毫無疑問,是當所有的距離

相同的時候,最近距離最大。但是此題每個隔間的座標有規定,使得不一定能使每一段的距離都能夠相等,所以,此時求最近距離的最優思路就是:

每一段區間距離都應該大於或等於m(但要盡可能的接近最近距離),這樣才能使最近距離最大

所以一旦所列舉的隔間距離恰好大於最近距離的時候,就在該隔間放牛,毫無疑問,這樣得到的最近距離才會盡可能的大

#include using namespace std;

int a[100010];

int l, r;

int n,c;

/*bool juge(int m)//判斷距離m是否可以

return true;

}*/bool juge(int m)

}if (ans >= c)return true; //如果所選取的隔間數量》=c,則說明列舉的最近距離成立,但是不夠大,所以return true,繼續列舉更大的距離

return false;

}int main()

cout << r<< endl; //由於最後l<=r的時候還會執行一次,會讓l-1(如果答案正確的話),所以應該輸出的是r

return 0;

}

P1824 進擊的奶牛

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

洛谷P1824進擊的奶牛

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

洛谷 P1824 進擊的奶牛

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