問題 B 小biu放牛 二分 貪心

2021-09-29 19:49:16 字數 1076 閱讀 3585

第二天叫醒我的不是鬧鐘,是夢想!

題目描述

第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一定買...