Problem3057--切木棍[Cutting Sticks,UVa10003]

3057: 切木棍[Cutting Sticks,UVa10003]

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

你需要把长度为L的木棍切割成多个小段。棍子上有n个切割点,每次只能做一次切割,每次切割收取的费用等于被切割的棍子的长度。很容易发现,选择不同的切割顺序会产生不同的费用。
例如,现有一个长度为10米棍子,切割点分别是距离一端2,4和7米处。如果按照2,4,7顺序进行切割,产生的费用是10+8+6=24,如果按照4,2,7顺序进行切割,产生的费用是10+4+6=20。
你的任务是在切割点处切割棍子,使得总切割的费用最小。

Input

输入包含多组测试数据。
对于每组测试数据:
第一行:一个整数L,表示木棍的长度,L<1000
第二行,一个整数N,表示切割点的数量,N<50
第三行,N个整数,分别表示N个切割点ci,按照升序给出(0<ci<L)
当输入为一行“0”时,表示输入结束

Output

对于每组数据,输出一行:"The minimum cutting is A.",A表示切割棍子的最小总费用

Sample Input Copy

100
3
25 50 75
10
4
4 5 7 8
0

Sample Output Copy

The minimum cutting is 200.
The minimum cutting is 22.

Source/Category