第二天叫醒我的不是鬧鐘,是夢想!
題目描述
第1行:3個數n x m,中間用空格分隔(1 <= n <= 50000, 1 <= x <= 10^9, 1 <= m <= 10^9)。
第2 - n + 1行:每行1個數pi,對應木樁的位置(0 <= pi <= pi+1 <= m),並且給出的資料是有序的。
輸出
輸出最長繩子的最小值。如果碼頭排不下所有船則輸出-1。
樣例輸入 copy
3 2 1613
14樣例輸出 copy
3提示
n = 3, x = 2, m = 16。三個木樁的位置為:1 3 14。牛的身長為2x = 4。你可以將三頭牛放在2 6 14(指的是牛身中間所處的位置),這樣牛和牛之間既沒有重疊,並且所用的最長的繩子最短,長度為3,即第2頭牛到第二根木樁的距離。
對於35%的資料,n<=10
對於70%的資料,n<=10000
對於100%的資料,n<=50000
假設木樁的位置是i
t是二分的繩子長度
//二分+貪心。我們要貪心把牛放在最前面,那麼牛頭的位置就是i-t-x;但是題目要求不能重疊,用max比較一下可以確定牛頭的位置在哪,這樣保證了靠前。然後我們可以用頭部的位置,判斷是否越界。最後要判斷一下尾部有沒有越界。
#include.h>
using namespace std;
const int n
=1e6+10
;int a[n]
;int n,x,m;
bool pd
(int t)
return
true;}
int main()
if(l==m+1)
puts
("-1");
else
printf
("%d\n"
,l);
}
二分 貪心 小biu放牛
題目描述 解題思路 神 新題目?奶牛變碼頭?二分最長繩子的長度,然後貪心判斷當前mid可不可行 在貪心過程中,如果當前奶牛樁不需要繩子,我們盡量將奶牛往左移 將奶牛往左移mid的長度,對mid沒有影響,但是可以為後面的奶牛的騰位置 比如 x 4,mid 4,第乙個奶牛樁 8 第二個奶牛樁 9 圖醜見...
Codeforces 1119B 貪心二分
不改變原陣列的值,複製乙份,要求1 k連續,則1 mid區間內判斷 子陣列從大到小排序後,每兩個相差不大,比較均勻 i 2 倒著的目的是前大後小 能裝前一定能裝後 盡量裝更多的 累積高度和 跳著累積高度和,如果 h 可增加更多的瓶子,否則高度太多瓶子太多,減小瓶子數量 const int maxn ...
發糖果問題 二分 貪心
注 與cf上的sweets for everyone 不一樣 幾個關鍵點 1.剛開始的位置是0。2.在時間充裕的前提下,如果手上的糖不夠,可以路過h不發糖,去s買了回來再發。3.但是每個s只能買一次糖。4.如果時間t內不能給所有鄰居發完糖果,則輸出 1。5.為了剛開始帶最少的糖果,每經過乙個s一定買...