貪心 牛客 道路鋪設

2021-09-26 23:55:27 字數 828 閱讀 7136

題目鏈結

題意:n個坑,每個坑有乙個深度,每次能選其中連續的一段,將這一段的深度減少1,問至少多少次可以把這些坑全部填成0(不能凸起來,也就是到0以後就不能再填了)

思路:這道題是在牛客上做優先佇列時看到的,之前學長講過一道類似的題,可以用貪心寫,比優先佇列簡單,就沒有再用優先佇列。

首先將題轉化成 :把最深的坑當成0,記錄每個坑凸起的高度,現在問題就轉化成了將這n個高度都變成原最大深度 所需的最小次數

比如 樣例的轉化

將4 3 2 5 3 5變成1 2 3 0 2 0

然後貪心思路:

if (a[i] - a[i + 1] > 0) ans += a[i] - a[i + 1];

注意特判:

if (maxx > a[1]) ans += maxx - a[1];

**:

#include

using namespace std;

typedef

long

long ll;

ll a[

200005];

intmain()

for(i =

1; i <= n; i++

) a[i]

= maxx - a[i]

; ll ans =0;

for(i =

1; i < n; i++)if

(maxx > a[1]

) ans +

= maxx - a[1]

;printf

("%lld\n"

, ans)

;}

鋪設道路 貪心

題目鏈結 題意 思路 這個貪心思路可以。可以看出來我們最開始肯定是整個n區域開始修,然後會遇到一段路被修好了,得分成倆個區間,但是,情況越分越複雜。所以,貪心大發神威。我們可以看出,這個修路和最開始從 修是沒有關係的,那麼我們從第1段路開始修,但是由於可以修乙個區間,所以我們先判斷他的右邊的那個數,...

貪心 NOIP2018 鋪設道路

春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 d i 春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深度減少 i 在選擇區間時,需要保證,區間內的每塊區...

E 鋪設道路

題目 春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 d i 春春每天可以選擇一段連續區間l,r 填充這段區間中的每塊區域,讓其下陷深度減少 1。在選擇區間時,需要保證,區間內的每...