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 翻译