貪心演算法 鋪路

2021-10-04 05:37:41 字數 930 閱讀 8771

春春是一名道路工程師,負責鋪設一條長度為 nn 的道路。

鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 nn 塊首尾相連的區域,一開始,第 ii 塊區域下陷的深度為 d_idi​ 。

春春每天可以選擇一段連續區間[l,r][l,r] ,填充這段區間中的每塊區域,讓其下陷深度減少 11。在選擇區間時,需要保證,區間內的每塊區域在填充前下陷深度均不為 00 。

春春希望你能幫他設計一種方案,可以在最短的時間內將整段道路的下陷深度都變為 00 。

輸入檔案包含兩行,第一行包含乙個整數 nn,表示道路的長度。 第二行包含 nn 個整數,相鄰兩數間用乙個空格隔開,第ii 個整數為 d_idi​ 。

輸出檔案僅包含乙個整數,即最少需要多少天才能完成任務。

輸入 #1複製

6   

4 3 2 5 3 5

輸出 #1複製

9

用貪心來做:

找規律:用f(n)表示前n條路最少需要鋪幾次路,

如果第n+1段路深度大於第n段,通過大量資料的分析得到公式:f(n+1)=f(n)+deep(n+1)-deep(n);

如果第n+1段路的深度小於等於第n段,顯然f(n+1)=f(n);

over!

#include using namespace std;

const int max = 100005;

const int inf = 0x7fffffff;

int n;

int a[max];

int main()

int cnt=a[0];

for (int i = 1; i < n; ++i)

printf("%d\n",cnt);

}

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...