求解一道算法題——石匠,自己寫的總是運行超時

題目描述

石匠接到活,要把石頭分成指定重量的若干塊。這是一個體力活,消耗的體力和石頭重量有關。一斤的石頭要消耗1千焦的能量。比如這次僱主的要求是:一塊21斤的石頭,分成6,7,8斤重的3塊。

石匠可以這樣:先把石頭分成6+15,要消耗 21k的能量。再把15斤的石頭分成7,8斤的,要消耗15k的能量,那麼,一共要消耗:21+15 = 36 k能量。

石匠也可以這樣: 先把石頭分成8+13,要消耗 21k的能量。再把13斤的石頭分成6,7斤的,要消耗13k的能量,那麼,一共要消耗:21+13 = 34 k能量。

當石匠接到任務後,要怎麼做才能消耗最小能量呢?

輸入

第1行:1個整數N(2 <= N <= 50000):表示要分成的石塊個數
第2 - N + 1行:每行1個整數Li(1 <= Li <= 1000):表示分成塊後,每塊石頭的重量

輸出

輸出最小的體力消耗(以k焦爲單位)

樣例輸入

3
6
7
8

樣例輸出

34

時間限制: 1 Sec
內存限制: 128 MB

1.這道題想了很久,一開始是想着先把輸入的數據排序,然後先把大的石頭切下,但是後來發現這個思路錯了。
2.然後我又用深度搜索遍歷所有的分法,找出最小的,但是超時了。
3.然後我做了一些優化,先把數組排序,然後在深度搜索的時候直接從數組中間開始劃分,往後遍歷所有情況,但還是超時了。
最後我實在想不出如何優化了,請教各位大佬 QAQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章