當(dāng)前位置:
首頁 >
分香肠
發(fā)布時間:2025/4/5
31
豆豆
分香腸
Problem Description
有一根長長的美味香腸,為了給集訓(xùn)隊(duì)的小朋友補(bǔ)充能量,現(xiàn)在要把這根香腸分為K份,每一份對應(yīng)的長度為L1,L2,…,Lk。
然而香腸很硬,老周在切香腸的時候需要耗費(fèi)一定的體力,消耗的體力數(shù)值等于香腸被切割后的長度之和。
舉個"栗子":比如需要把香腸切成5; 8; 8三種長度時,老周先把香腸切成8和13,消耗體力8+13 = 21;再將13切割成5和8,消耗體力5 + 8 = 13,所以總的消耗體力數(shù)值等于21 + 13 = 34。
請你把老周計(jì)算一下,怎么樣切割香腸,才能保證消耗的體力最小。
Input
輸入第一行包含一個正整數(shù)n(1 <= n <= 20000)
輸入第二行包含n個正整數(shù)L1…Ln(1 <= Li <= 50000)
Output
輸出最小的消耗體力數(shù)值
Sample Input:
2
2 6
Sample Output:
8
分析:
不是簡單的前綴和,因?yàn)橛袞|西重復(fù)使用了。
下面代碼是錯誤的
正確代碼
分析:需要取出a和b之后,把a(bǔ)和b的和放進(jìn)去,再進(jìn)行累加。
舉個例子
想要分成5,8,8三段。第一次切成8+13(消耗體力21),第二次把13分成5+8(消耗體力13),總消耗21+13=34點(diǎn)體力,這個過程中13(5+8)被用了兩次。
這個可以使用優(yōu)先隊(duì)列來做,
AC代碼
總結(jié)