原題:
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題意:有n個牛棚,c頭牛,兩頭牛不能放在同乙個牛棚裡,並且兩頭牛之間間隔距離越大越好。求在保證所有相鄰的兩頭牛之間間隔最大情況下的相鄰倆頭牛的最近距離。
題解:這道題目,採用二分則很簡單,確立乙個mid作為當前最優解,在進入判斷,只有兩頭牛之間距離大於等於mid時才可以裝牛。若是在此距離(mid)下,不能夠裝下所有的牛,則證明mid取大了,反之亦然。
附上**:
#include #include using namespace std;
int n,c,a[100005],l,m,r;
bool check(int m)//判斷m的取值是大了還是小了
}if(cnt+1>n>>c;
for(int i=1;i<=n;i++)
sort(a+1,a+n+1);//由於輸入的距離不一定時公升序,所以要排序
l=1;
r=a[n]-a[1];
while(l<=r)
cout
}
洛谷P1824進擊的奶牛
題目描述 farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把...
洛谷 P1824 進擊的奶牛
又是一道二分答案啊 如果發現題意是 最小值最大 最大值最小 最優解 那麼就要思考是不是用二分答案寫了 其實還是一道跳石頭 奶牛跳房子 不懂可以看下這題我的題解 建議先做做跳石頭 把牛棚當作石頭,把牛的總數當作必須有的石頭數,那麼牛棚總數減去牛的總數就是可以移開石頭的個數 然後就是跳石頭啦 但寫法有一...
洛谷 P1824 進擊的奶牛
farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把這些牛安置...