洛谷1334 瑞瑞的木板

2021-08-26 20:36:58 字數 835 閱讀 7332

瑞瑞想要親自修覆在他的乙個小牧場周圍的圍欄。他測量柵欄並發現他需要n(1≤n≤20,000)根木板,每根的長度為整數li(1≤li≤50,000)。於是,他神奇地買了一根足夠長的木板,長度為所需的n根木板的長度的總和,他決定將這根木板切成所需的n根木板。(瑞瑞在切割木板時不會產生木屑,不需考慮切割時損耗的長度)瑞瑞切割木板時使用的是一種特殊的方式,這種方式在將一根長度為x的模板切為兩根時,需要消耗x個單位的能量。瑞瑞擁有無盡的能量,但現在提倡節約能量,所以作為榜樣,他決定盡可能節約能量。顯然,總共需要切割n-1次,問題是,每次應該怎麼切呢?請程式設計計算最少需要消耗的能量總和。

輸入格式:

第一行: 整數n,表示所需木板的數量

第2到n+1行: 每行為乙個整數,表示一塊木板的長度

輸出格式:

乙個整數,表示最少需要消耗的能量總和

輸入樣例#1:

385

8

輸出樣例#1:

34
典型貪心。將最小的兩塊板子合併,其所消耗能量最少。用乙個優先佇列來維護板子長度,彈出最小的兩塊板子合併再放入佇列。注意資料過大需要用ll。

#include#include#include#define ll long long

using namespace std;

int main()

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

cout << ans << endl;

return 0;

}

洛谷 P1334 瑞瑞的木板

瑞瑞想要親自修覆在他的乙個小牧場周圍的圍欄。他測量柵欄並發現他需要n 1 n 20,000 根木板,每根的長度為整數li 1 li 50,000 於是,他神奇地買了一根足夠長的木板,長度為所需的n根木板的長度的總和,他決定將這根木板切成所需的n根木板。瑞瑞在切割木板時不會產生木屑,不需考慮切割時損耗...

題解 P1334 瑞瑞的木板

首先,這個題解是我有了慘痛的教訓 全部wa.先發乙個code做宣告 include 萬能標頭檔案,優先佇列oi請用 define lli long long int using namespace std priority queue,greater cz void work for lli i 1...

Luogu P1334 瑞瑞的木板(手寫堆)

其實這個題完全不需要用手寫堆,只需要一遍遍sort就行了 但是!為了練習手寫堆,還是用手寫堆做了。在做本題之前,如果你沒有什麼思路的話,建議先做luogu的合併果子。好,假設你已經做過了合併果子了。那麼正式開始本題 ac include include include include include...