洛谷 P1824 進擊的奶牛

2022-04-30 18:36:10 字數 1394 閱讀 4932

我寫了個set版本的o_o

二分的細節方面很讓人頭疼,我用」//zy「(注意)標註了一些細節o_o

#include#include#include#include#includeusing namespace std;

int n,c;

set oxro;

set::iterator it=oxro.end();

bool check(int dis)

if(niu>=c)return 1;

}if(niu+1return 0;//zy//zy

return 1;

}int main()

int l=1,r=*(--it)-*oxro.begin();//zy

while(l<=r)

printf("%d\n",r);//zy

}

細節方面也可以這樣寫,也通過了:

#include#include#include#include#includeusing namespace std;

int n,c;

set oxro;

set::iterator it=oxro.end();

bool check(int dis)

if(niu>=c)return 1;

}return 0;

}int main()

int l=0,r=*(--it)-*oxro.begin()+1;//zy

int mid;

while(l<=r)

printf("%d\n",r);//zy

}

//不久前,本蒟蒻終於明白了:二分就是暴力,優化的暴力o_o

//注意:二分的有些細節問題,例如迴圈條件到底要不要加'=',一定要編資料多除錯!!!(其實對於本蒟蒻,往往會因為這些點磨嘰很久...多多嘗試吧!!!)

//對於"最大值的最小值","最小值的最大值"之類的題一般都是用二分。

//例如本題為"最小值的最大值",通過"二分"的方式來列舉"最大值"的可能值。(如果列舉出的mid符合條件,那我們再搜一搜有沒有比mid大的值也符合條件o_o)

//我看了看樓下的題解,主要的方法有兩種:

//1.保證距離與牛欄數,看能否放下c頭牛 (我用的是這種)

//2.保證距離與牛數,看需要多少牛欄

//注意:某些東西在迴圈裡return貌似是有那麼一點點快o_o

1.set的版本在windows下的oj中不一定能過,有可能會超時。

2.有乙個點必須要注意:最後要輸出r,因為r在r、l、mid中理論上是最大的,否則大部分wa

洛谷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 進擊的奶牛

又是一道二分答案啊 如果發現題意是 最小值最大 最大值最小 最優解 那麼就要思考是不是用二分答案寫了 其實還是一道跳石頭 奶牛跳房子 不懂可以看下這題我的題解 建議先做做跳石頭 把牛棚當作石頭,把牛的總數當作必須有的石頭數,那麼牛棚總數減去牛的總數就是可以移開石頭的個數 然後就是跳石頭啦 但寫法有一...