時間限制:3000 ms | 記憶體限制:65535 kb
難度:3
描述小明很想吃果子,正好果園果子熟了。在果園裡,小明已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。小明決定把所有的果子合成一堆。 因為小明比較懶,為了省力氣,小明開始想點子了:
每一次合併,小明可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n-1次合併之後,就只剩下一堆了。小明在合併果子時總共消耗的體力等於每次合併所耗體力之和。
因為還要花大力氣把這些果子搬回家,所以小明在合併果子時要盡可能地節省體力。假定每個果子重量都為1,並且已知果子的種類數和每種果子的數目,你的任務是設計出合併的次序方案,使小明耗費的體力最少,並輸出這個最小的體力耗費值。
例如有3種果子,數目依次為1,2,9。可以先將1、2堆合併,新堆數目為3,耗費體力為3。接著,將新堆與原先的第三堆合併,又得到新的堆,數目為12,耗費體力為12。所以小明總共耗費體力=3+12=15。可以證明15為最小的體力耗費值。
輸入第一行輸入整數n(0輸出
每組測試資料輸出包括一行,這一行只包含乙個整數,也就是最小的體力耗費值。
樣例輸入
1樣例輸出3 1 2 9
15
佇列和優先佇列
佇列是一種先進先出的資料結構 可以定義乙個結構體,表示乙個佇列。struct queue 另外c 中有stl標準模板庫 封裝了queue類 標頭檔案 include queue queue int vis vis.pop 刪除隊首元素 vis.back 返回隊尾元素 vis.front 返回隊首元素...
FIFO佇列和優先佇列
fifo佇列相當於一般的佇列 優先隊列為操作時有優先順序的佇列 1.標頭檔案 include 2.fifo佇列 queue 型別名 變數名 3.優先佇列 priority queue 型別名 變數名 1.預設優先順序為優先順序最高的先出隊,預設的int型別的優先佇列中先出隊的為佇列中較大的數。2.小...
FIFO佇列和優先佇列
fifo佇列 定義 先進先出的儲存結構 刪除時先刪最後乙個元素 queue 型別 q 增 q.push 元素值 在隊尾加入乙個元素 void刪 q.pop 刪除元素,刪除隊首元素 void改 查 q.size 返回佇列中剩餘元素個數 int q.empty 返回佇列是否為空 bool q.front...