2018-2-6
直接使用二分搜尋即可,如果可以滿足條件的話,就在mid與high之間,否則的話就在low與mid之間。
在判斷給定的d是否能夠滿足條件時,我用的是貪心的想法,就是讓牛盡可能的朝左邊的牛棚中去,這樣很容易就可以判斷出來。
#include
#include
#include
using
namespace
std;
const
int n = 100000;
int x[n+1];
int n,c,cnt;
bool res(int d)
}return cnt>=c;
}void div()
cout
sort(x+1,x+n+1);
div();
}return
0;}
其實我一直有乙個疑問,就是在二分搜尋中,high什麼時候等於mid,什麼時候等於mid-1,low什麼時候等於mid,什麼時候等於mid+1,返回的值什麼時候等於mid,什麼時候等於high,什麼時候等於low…… poj2456(二分搜尋)
題意 n間牛舍,m頭牛,最近的兩頭牛的距離為d,求d的最大值 key 二分搜尋。從0 無窮大中搜尋符合要求的值。二分搜尋 include include include include using namespace std const int maxn 1e5 int n,m int inf 1e...
POJ2456 二分搜尋
poj2456 aggressive cows 題意 有n間牛舍,牛舍被排在一條線上,第i號牛舍在xi的位置。但是他的m頭牛對小屋很不滿意,因此經產互相攻擊。為了防止牛之間互相傷害,因此決定把每頭牛都放在離其他牛盡量遠的牛舍。也就是要最大化最近的兩頭牛之間的距離。關於最小值最大化或者最大值最小化的問...
POJ 2456(二分搜尋)
題目鏈結 題目大意,給牛的數量和牛棚的座標位置,求把牛全部放進牛棚後最小牛間距的最大值 思路 二分列舉相鄰兩牛的間距,判斷大於等於此間距下能否放進所有的牛 include include include include using namespace std const int n 1e6 10 i...