二分 貪心 小biu放牛

2021-10-25 07:22:41 字數 1005 閱讀 1599

題目描述

解題思路

神**新題目??奶牛變碼頭??

二分最長繩子的長度,然後貪心判斷當前mid可不可行

在貪心過程中,如果當前奶牛樁不需要繩子,我們盡量將奶牛往左移;將奶牛往左移mid的長度,對mid沒有影響,但是可以為後面的奶牛的騰位置

比如:x = 4,mid = 4,第乙個奶牛樁(8)第二個奶牛樁(9)(圖醜見諒)

很容易可以看出到第二個奶牛樁(9)繩子需要7,mid就不可行了

但其實奶牛是站的下的(mid可行)

第乙個奶牛樁(8)雖然不需要繩子就可行,但是我們盡量往左移

第乙個奶牛樁(8)往左移後,第二奶牛樁(9)的繩子就只需要3了,mid是可行的

貪心的時候將奶牛都盡量往左移

code

#include 

#include

using namespace std;

int n, len, m, ans, a[

50010

], x, l, r, mid;

bool check

(int s)

else

if(x > m)

return0;

//超過路長

}return1;

}int main()

printf

("%d"

, ans)

;}

問題 B 小biu放牛 二分 貪心

第二天叫醒我的不是鬧鐘,是夢想!題目描述 第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。樣例...

二分貪心 21

題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...

二分貪心 E

題目 輸入n和c,n代表有n間屋子c代表有c頭牛,然後輸入n個數代表這n間房子的座標,牛不喜歡這個布局,一進去就會很暴躁,所以要把牛分的盡可能的遠求最近兩頭牛的最大距離。解題思路 建立乙個陣列存這些房子的座標,然後用sort將這些座標排序,然後令l 0,r a n mid l r 2,先用mid當作...