AT_abc119_c [ABC119C] Synthetic Kadomatsu

题目描述

你有 $N$ 根竹子。这些竹子的长度分别为 $l_1,\ l_2,\ ...,\ l_N$(单位:厘米)。 你的目标是使用这些竹子中的若干根(也可以全部使用),得到三根长度分别为 $A,\ B,\ C$ 的竹子。为此,你可以任意顺序、任意次数地使用以下三种魔法: - 延长魔法:消耗 $1$ 点 MP(魔法点数),选择一根竹子,将其长度增加 $1$。 - 缩短魔法:消耗 $1$ 点 MP,选择一根长度至少为 $2$ 的竹子,将其长度减少 $1$。 - 合成魔法:消耗 $10$ 点 MP,选择两根竹子,将它们连接成一根新竹子。新竹子的长度等于两根竹子的长度之和。(之后你可以继续对这根新竹子使用魔法。) 请问,最少需要多少 MP 才能达成目标?

输入格式

输入以如下格式从标准输入读入。 > $N$ $A$ $B$ $C$ $l_1$ $l_2$ $\cdots$ $l_N$

输出格式

输出达成目标所需的最小 MP。

说明/提示

## 限制条件 - $3 \leq N \leq 8$ - $1 \leq C < B < A \leq 1000$ - $1 \leq l_i \leq 1000$ - 输入的所有值均为整数。 ## 样例解释 1 你有 $5$ 根长度为 $98,\ 40,\ 30,\ 21,\ 80$ 的竹子,目标是得到长度为 $100,\ 90,\ 80$ 的三根竹子。你已经拥有一根长度为 $80$ 的竹子,可以通过如下方式使用魔法,以总共消耗 $23$ MP 达到目标,这也是最优解: 1. 对长度为 $98$ 的竹子使用延长魔法 $2$ 次,得到长度为 $100$ 的竹子。(消耗 MP:$2$) 2. 对长度为 $40$ 和 $30$ 的竹子使用合成魔法,得到长度为 $70$ 的竹子。(消耗 MP:$10$) 3. 对长度为 $21$ 的竹子使用缩短魔法 $1$ 次,得到长度为 $20$ 的竹子。(消耗 MP:$1$) 4. 将步骤 2 得到的长度为 $70$ 的竹子与步骤 3 得到的长度为 $20$ 的竹子使用合成魔法,得到长度为 $90$ 的竹子。(消耗 MP:$10$) ## 样例解释 2 如果你已经拥有所有目标长度的竹子,则所需 MP 为 $0$。注意,并不一定要使用所有的竹子。 由 ChatGPT 4.1 翻译