洛谷 P1334 瑞瑞的木板

2022-04-06 06:55:30 字數 931 閱讀 6553

瑞瑞想要親自修覆在他的乙個小牧場周圍的圍欄。他測量柵欄並發現他需要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

將長度為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...