// 題目

最省成本切木棍

Cheapest Stick Cutting・apcs-21-01

  • APCS 範圍外
  • 斜率優化
  • APCS 實作專題・DP — Optimization

時間限制 1 秒・記憶體 64 MB

到 Aki-Judge 送出

送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。

題目敘述

木工社要把一根長 L 的木棍,在指定的 n 個位置各鋸一刀。每鋸一刀,成本等於當下被鋸的那一段木棍的長度(鋸開後兩段分別獨立處理)。鋸的順序可以自由安排,請算出完成所有切割的最小總成本。

輸入包含多組測資:每組先給木棍長度 L,再給切點數 n,最後是 n 個切點位置。當 L=0 時輸入結束。

輸入格式

重複讀取:一行 L,一行 n,一行 n 個切點位置;遇到 L=0 結束。

輸出格式

每組測資輸出一行 The minimum cutting is C.,其中 C 是最小總成本。

限制

  • 1 ≤ L ≤ 1000
  • 1 ≤ n ≤ 50
  • 0 < ci < L,且切點互不相同

範例

範例 1

輸入

100
3
25 50 75
0

輸出

The minimum cutting is 200.

範例 2

輸入

10
1
5
0

輸出

The minimum cutting is 10.

說明

範例 1 中,先切中間 50(成本 100),再各切左右兩段(各 50),共 200。範例 2 只有一刀,要鋸整根木棍,成本就是 10。

提示:把 0 和 L 也當成端點,對區間做 DP。

到 Aki-Judge 送出

送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。

卡住了可以到 Discord 的 #程式問題 發問,小墨助教會先給提示,不會直接給答案。