#P17678. [IO 2025 #4] 拆钞幻术
[IO 2025 #4] 拆钞幻术
题目描述
四骑士正在准备一个新的魔术。舞台上有一块魔法板,最初只写着一个数 ,表示据称存放在银行保险箱中的金额。
每一步,魔术师可以进行以下操作:
- 选择板上的一个数 。
- 擦掉 。
- 写上两个正整数 和 ,满足 。
然而,每次这样的拆分,制作人都需要支付 枚硬币作为特效费用。
四骑士希望在某个时刻,板上出现预先指定的若干个数。这些数表示观众据称在魔术结束后会在自己的账户中看到的金额。板上也可以保留其他多余的数,只要所有需要的金额都已出现即可。
给定一个包含 个数的数组 ,表示不同版本的魔术可能需要的最终金额。
制作人提出 个询问。每个询问选择数组 的一个子区间 ,并指定板上的初始金额 。
对于每个询问,请判断:能否从板上唯一的数 出发,通过上述操作,得到 这些数?这些数的顺序不重要,板上可以额外出现其他数。若区间内某个数出现多次,则板上也需要出现相应次数。如果可以,请求出所有拆分操作的最小总费用;否则,请报告无法完成这个魔术。
输入格式
第一行包含两个整数 和 ,分别表示数组长度和询问个数,满足 。
第二行包含 个整数 ,满足 。
接下来 行,每行包含三个整数 ,描述一个询问,满足 ,。
输出格式
对于每个询问,在单独一行输出制作人完成魔术需要支付的最小硬币数。如果无法得到要求的这些数,输出 。
5 6
1 2 3 4 5
2 4 10
1 3 6
3 5 10
1 5 20
2 2 5
2 2 2
35
11
-1
160
6
0