#AT1311. C - Synthetic Kadomatsu
C - Synthetic Kadomatsu
C - 合成的小田Matsuro
分数:300分
问题描述
你有N根竹子,它们的长度(以厘米为单位)分别是$l_1, l_2, ..., l_N$。
你的目标是使用这些竹子的某些(可能全部)来得到三根长度分别为$A, B, C$的竹子。为此,你可以使用以下三种魔法任意次:
- 扩展魔法:消耗1个魔法点(MP)。选择一根竹子,将其长度增加1。
- 缩短魔法:消耗1个MP。选择一根长度至少为2的竹子,将其长度减少1。
- 合成魔法:消耗10个MP。选择两根竹子,将它们合并成一根竹子。这根新竹子的长度等于这两根竹子的长度之和。(此后,可以对这根竹子继续使用其他魔法)
至少需要消耗多少个MP才能实现目标?
约束条件
- $3 \leq N \leq 8$
- $1 \leq C < B < A \leq 1000$
- $1 \leq l_i \leq 1000$
- 输入中的所有值都是整数。
输入
输入为标准输入,格式如下所示:
输出
输出实现目标所需的最小MP数量。
5 100 90 80
98
40
30
21
80
23
我们要从五段竹子$98, 40, 30, 21, 80$中得到长度为$100, 90, 80$的三段竹子。我们已经有一段长度为80的竹子,并且我们可以通过以下魔法以总共23个MP的总成本得到长度为100, 90$的竹子,这是最优解。
- 将长度为98的竹子使用扩展魔法两次,得到长度为100的竹子。(消耗的MP:2)
- 将长度为40, 30的竹子使用合成魔法得到长度为70的竹子。(消耗的MP:10)
- 将长度为21的竹子使用缩短魔法一次,得到长度为20的竹子。(消耗的MP:1)
- 将第2步得到的长度为70的竹子和第3步得到的长度为20的竹子使用合成魔法得到长度为90的竹子。(消耗的MP:10)
8 100 90 80
100
100
90
90
90
80
80
80
0
如果我们已经有所有所需长度的竹子,则所需的MP数量为0。就像这里看到的,我们不一定需要使用所有的竹子。
8 1000 800 100
300
333
400
444
500
555
600
666
243
相关
在下列比赛中: