CSES 1161 - Stick Divisions
512M你有一根長度為 \(x\) 的木棍,你想把它切成 \(n\) 段指定長度的木棍,這些木棍的總長度為 \(x\)。
每次操作你可以選擇任一根木棍,將它切成兩段。該次操作的花費等於原本那根木棍的長度。
請問要切出所有目標木棍所需的最小總花費是多少?
輸入格式
輸入第一行包含兩個整數 \(x\) 與 \(n\):原始木棍的長度以及要切成的木棍數量。
第二行包含 \(n\) 個整數 \(d_1,d_2,\ldots,d_n\):每一段目標木棍的長度。
輸出格式
輸出一個整數:切割所需的最小總花費。
範例輸入 1
8 3
2 3 3
範例輸出 1
13
說明:你先將長度為 \(8\) 的木棍切成長度 \(3\) 與 \(5\) 的兩段(花費 \(8\))。接著將長度為 \(5\) 的木棍切成長度 \(2\) 與 \(3\) 的兩段(花費 \(5\))。總花費為 \(8+5=13\)。
限制
- \(1 \le x \le 10^9\)
- \(1 \le n \le 2 \cdot 10^5\)
- \(\sum d_i = x\)
題目來源
題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。
登入後即可撰寫程式並提交評測。
登入