atcoder#ABC119C. [ABC119C] Synthetic Kadomatsu
[ABC119C] Synthetic Kadomatsu
题目描述
あなたは 本の竹を持っています。これらの長さはそれぞれ です (単位: センチメートル)。
あなたの目的は、これらの竹のうち何本か (全部でもよい) を使い、長さが であるような 本の竹を得ることです。そのために、以下の三種類の魔法を任意の順に何度でも使うことができます。
- 延長魔法: MP (マジックポイント) を消費し、 本の竹を選んでその長さを 増やす。
- 短縮魔法: MP を消費し、 本の長さ 以上の竹を選んでその長さを 減らす。
- 合成魔法: MP を消費し、 本の竹を選んで接続し 本の竹とする。この新たな竹の長さは接続した 本の竹の長さの合計に等しい。(以後、この竹に対してさらに魔法を使用することもできる。)
目的を達成するには、最小でいくつの MP が必要でしょうか?
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
目的の達成に必要な MP の最小量を出力せよ。
题目大意
你有n根筷子,长度分别为 , , ... ,为了得到长度分别为 , , 的三根筷子,现在你要施展若干次魔法,问消耗的最小魔法值是多少?
你可以用下面三种魔法改变筷子的长度:
1.消耗 魔法点,选一根竹子,让它的长度增加
2.消耗 魔法点,选一根长度至少为 的竹子,让它的长度减一
3.消耗 魔法点,选两根竹子,将它们合并,合并之后的竹子是合并前两根竹子长度的总和
5 100 90 80
98
40
30
21
80
23
8 100 90 80
100
100
90
90
90
80
80
80
0
8 1000 800 100
300
333
400
444
500
555
600
666
243
提示
制約
- 入力される値はすべて整数である。
Sample Explanation 1
長さ の 本の竹から長さ の 本の竹を得ようとしています。長さ の竹ははじめから持っており、長さ の竹は次のように魔法を使うと合計 MP を消費することで得られ、これが最適です。 1. 長さ の竹に延長魔法を 回使い、長さ の竹を得る。(消費 MP: ) 2. 長さ の竹に合成魔法を使い、長さ の竹を得る。(消費 MP: ) 3. 長さ の竹に短縮魔法を 回使い、長さ の竹を得る。(消費 MP: ) 4. 手順 2. で得た長さ の竹と手順 3. で得た長さ の竹に合成魔法を使い、長さ の竹を得る。(消費 MP: )
Sample Explanation 2
欲しい長さの竹をすでにすべて持っている場合、必要な MP は です。このように、必ずしもすべての竹を使う必要はありません。