站外助求助
  • 板块题目总版
  • 楼主VelvetChords
  • 当前回复0
  • 已保存回复1
  • 发布时间2024/8/18 20:25
  • 上次更新2024/8/18 23:04:28
查看原帖
站外助求助
1325916
VelvetChords楼主2024/8/18 20:25

rt。

描述

你有 nn 根筷子,长度分别为 ?1,?2,?3...???_1,?_2,?_3...?_?,为了得到长度分别为 A,B,CA,B,C 的三根筷子,现在你要施展若干次魔法,问消耗的最小魔法值是多少?

你可以用下面三种魔法改变筷子的长度:

1.消耗1魔法点,选一根竹子,让它的长度增加1

2.消耗1魔法点,选一根长度至少为2的竹子,让它的长度减一

3.消耗10魔法点,选两根竹子,将它们合并,合并之后的竹子是合并前两根竹子长度的总和。

输入

第一行有四个整数 N,A,B,C(中3≤N≤8,1≤C<B<A≤1000)N,A,B,C(中3 \le N≤8,1≤C<B<A≤1000)。

接下来有N行,每行一个整数,分别表示 NN 个筷子的长度 ??(1≤??≤1000)?_?(1≤?_?≤1000)。

输出

输出消耗的最小魔法值。

输入样例 1

5 100 90 80

98

40

30

21

80

输出样例 1

23

样例输入 8 1000 800 100

300

333

400

444

500

555

600

666

样例输出

243

纯蒟蒻,看得出来是状态拆分店dp,但不懂每个情况情况怎么dp。并且怎么考虑合成顺序。

求助!

2024/8/18 20:25
加载中...