題面(from luogu)
進擊的奶牛
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行:每行乙個整數,表示每個隔間的座標。
輸出格式:
輸出只有一行,即相鄰兩頭牛最大的最近距離。
輸入樣例#1:
5 3128
49輸出樣例#1:
3題目分析
這是一到可以很容易看出來的二分題(巨大的查詢範圍可以看出)。
在正常情況下,二分模板都是可以套進去的,但是難點是在對解是否合法的判斷上。
在這一道題目上面,我們可以寫乙個子程式來判斷一下,具體的也就是用當前的解,不停的向前面放,如果當前的放不了了,就說明有乙個屋子廢了,當然,我們算出最多可以廢幾個屋子,對比一下,即可
到這裡,這一道題就寫完了,
其他的也就是套模板了,這一題是比較適合用while版的二分來寫的
**
#include using namespace std;
int a[1000009],n,k;
bool judge(int x) //判斷函式
return true; //反之就是合法的
}int main()
if (judge(right)) cout
cout
}
** 菜雞c_uizrp_dzjopkl原創**
P1824 進擊的奶牛
farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把這些牛安置...
進擊的奶牛(二分查詢)
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想把...