例題 P-4-3. 十年磨一劍 (最少完成時間)


Submit solution

分數: 100 (partial)
時間限制: 1.0s
記憶體限制: 1G

作者:
題目類型
允許的語言
Assembly, Brainfuck, C, C++, Python

人們常用說「十年磨一劍」來比喻下的功夫深,但是這句話對於華山磨劍坊就不適用了,因為要磨劍的客人非常的多,一把劍如果磨太久,客人等待的時間過長是會被客訴的。 華山磨劍坊目前有 \( n \) 筆訂單,每筆訂單要磨一把劍,每把劍所需的時間不盡相同。磨劍師傅每次只能磨一把劍,現在希望每一筆訂單的完成時間之總和能夠最小 ,  希望能找出最好的磨劍順序。 舉例來說,如果有四把劍,磨劍需要的時間分別是 \( (3,1,3,4)\) ,如果以 \( (3,1,3,4) \) 的順序來磨,第一把的完成時間是 \( 3\) ,第二把完成 時間是 \( 3+1=4\) ,第三把是 \( 3+1+3=7\) ,第四把是 \( 3+1+3+4=11\) ,總和是 \( 3+4+7+11=25\) 。 如果把順序改成 \( (1,3,3,4) \) ,那麼完成時間分別是 \( (1,4,7,11) \) ,總和是 \( 23\) ,這是這一題最好的解。

輸入格式

第一行是一個正整數 \( n \) , 第二行有 \( n \) 個正整數是每一把劍需要的時間,同行數字間以空白間格。 \( n \) 與每把劍的時間都不超過 \( 1e5 \) 。

輸出格式

輸出最小的完成時間總和。

範例輸入

4
3 1 3 4

範例輸出

23

評論

目前沒有評論。