瑞瑞想要親自修覆在他的乙個小牧場周圍的圍欄。他測量柵欄並發現他需要n(1≤n≤20,000)根木板,每根的長度為整數li(1≤li≤50,000)。於是,他神奇地買了一根足夠長的木板,長度為所需的n根木板的長度的總和,他決定將這根木板切成所需的n根木板。(瑞瑞在切割木板時不會產生木屑,不需考慮切割時損耗的長度)瑞瑞切割木板時使用的是一種特殊的方式,這種方式在將一根長度為x的模板切為兩根時,需要消耗x個單位的能量。瑞瑞擁有無盡的能量,但現在提倡節約能量,所以作為榜樣,他決定盡可能節約能量。顯然,總共需要切割n-1次,問題是,每次應該怎麼切呢?請程式設計計算最少需要消耗的能量總和。
輸入格式:
第一行: 整數n,表示所需木板的數量
第2到n+1行: 每行為乙個整數,表示一塊木板的長度
輸出格式:
乙個整數,表示最少需要消耗的能量總和
輸入樣例#1: 複製
3858
輸出樣例#1: 複製
34
將長度為21的木板,第一次切割為長度為8和長度為13的,消耗21個單位的能量,第二次將長度為13的木板切割為長度為5和8的,消耗13個單位的能量,共消耗34個單位的能量,是消耗能量最小的方案。
思路:優先佇列的貪心。
#include#include#include
#include
#include
#define ll long long
using
namespace
std;
intn;
ll t,ans=0
;priority_queue
, greater>q;
intmain()
for(int i=1;i)
cout
return0;
}
題解 P1334 瑞瑞的木板
首先,這個題解是我有了慘痛的教訓 全部wa.先發乙個code做宣告 include 萬能標頭檔案,優先佇列oi請用 define lli long long int using namespace std priority queue,greater cz void work for lli i 1...
洛谷1334 瑞瑞的木板
瑞瑞想要親自修覆在他的乙個小牧場周圍的圍欄。他測量柵欄並發現他需要n 1 n 20,000 根木板,每根的長度為整數li 1 li 50,000 於是,他神奇地買了一根足夠長的木板,長度為所需的n根木板的長度的總和,他決定將這根木板切成所需的n根木板。瑞瑞在切割木板時不會產生木屑,不需考慮切割時損耗...
Luogu P1334 瑞瑞的木板(手寫堆)
其實這個題完全不需要用手寫堆,只需要一遍遍sort就行了 但是!為了練習手寫堆,還是用手寫堆做了。在做本題之前,如果你沒有什麼思路的話,建議先做luogu的合併果子。好,假設你已經做過了合併果子了。那麼正式開始本題 ac include include include include include...