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