#ABC119C. 合成竹

合成竹

合成竹

题目描述

你手上有 NN 根竹子,长度分别为 l1,l2,...,lNl_1, l_2, ..., l_N(单位:厘米)。

你的目标是从这些竹子中选取若干根(也可以全部),得到长度分别为 A,B,CA, B, C33 根竹子。为此,你可以按任意顺序、任意次数使用下面三种魔法:

  • 延展魔法: 消耗 11 MP(魔法值),选 11 根竹子,使其长度增加 11
  • 缩短魔法: 消耗 11 MP,选 11 根长度在 22 以上的竹子,使其长度减少 11
  • 合成魔法: 消耗 1010 MP,选 22 根竹子连接成 11 根。新竹子的长度等于连接的两根竹子的长度之和。(此后,还可以对这根竹子继续使用魔法。)

要达成目标,最少需要多少 MP?

输入格式

输入按以下格式从标准输入给出:

NN AA BB CC
l1l_1
l2l_2
::
lNl_N

输出格式

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

样例

5 100 90 80
98
40
30
21
80
23

要从长度分别为 98,40,30,21,8098, 40, 30, 21, 8055 根竹子得到长度分别为 100,90,80100, 90, 8033 根竹子。长度 8080 的竹子一开始就有;长度 100,90100, 90 的竹子按下面方式使用魔法,共消耗 2323 MP 即可得到,这是最优的。

  • 对长度 9898 的竹子使用延展魔法 22 次,得到长度 100100 的竹子。(消耗 MP: 22)
  • 对长度 40,3040, 30 的竹子使用合成魔法,得到长度 7070 的竹子。(消耗 MP: 1010)
  • 对长度 2121 的竹子使用缩短魔法 11 次,得到长度 2020 的竹子。(消耗 MP: 11)
  • 对步骤 2. 得到的长度 7070 的竹子和步骤 3. 得到的长度 2020 的竹子使用合成魔法,得到长度 9090 的竹子。(消耗 MP: 1010)
8 100 90 80
100
100
90
90
90
80
80
80
0

如果已经拥有所有想要长度的竹子,所需 MP 为 00。由此可见,不一定必须使用所有竹子。

8 1000 800 100
300
333
400
444
500
555
600
666
243

数据范围

  • 3N83 \leq N \leq 8
  • 1C<B<A10001 \leq C \lt B \lt A \leq 1000
  • 1li10001 \leq l_i \leq 1000
  • 输入的所有值均为整数。
难度 普及
通过率
尝试 0
已通过 0
ID
1672
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签