#CF1936C. C. 宝可梦竞技场
C. 宝可梦竞技场
每次测试的时间限制: 秒
每次测试的内存限制: 兆字节
你身处一个决斗竞技场。你拥有 只宝可梦。初始时,只有第 只宝可梦站在竞技场中。
每只宝可梦都有 个属性。第 只宝可梦的第 个属性为 。每只宝可梦还有雇佣费用:第 只宝可梦的费用为 。
你想要让第 只宝可梦站在竞技场中。为此,你可以按任意顺序执行任意次以下两种操作:
- 选择三个整数 (,,),将 永久增加 。此操作的代价为 。
- 选择两个整数 (,),并雇佣第 只宝可梦,让它基于第 个属性与当前竞技场中的宝可梦进行决斗。如果 大于或等于 当前竞技场中宝可梦的第 个属性,则第 只宝可梦获胜(否则失败)。决斗后,只有获胜者留在竞技场中。此操作的代价为 。
求出使第 只宝可梦站在竞技场中所需支付的最小总代价。
输入
每个测试点包含多个测试用例。第一行包含测试用例的数量 ()。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 和 (,,)。
第二行包含 个整数 ()。
接下来的 行中的第 行包含 个整数 ()。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出使第 只宝可梦站在竞技场中所需的最小代价。
示例
输入
4
3 3
2 3 1
2 9 9
6 1 7
1 2 1
3 3
2 3 1
9 9 9
6 1 7
1 2 1
4 2
2 8 3 5
18 24
17 10
1 10
1 1
6 3
21412674 3212925 172015806 250849370 306960171 333018900
950000001 950000001 950000001
821757276 783362401 760000001
570000001 700246226 600757652
380000001 423513575 474035234
315201473 300580025 287023445
1 1 1
输出
2
6
17
1224474550
注释
在第一个测试用例中,初始站在竞技场中的第 只宝可梦的属性数组为 。
- 第一次操作:选择 ,,,将 永久增加 。现在第 只宝可梦的属性数组变为 。此操作代价为 。
- 第二次操作:选择 ,,雇佣第 只宝可梦,基于第 个属性与当前宝可梦决斗。由于 ,第 只宝可梦获胜。此操作代价为 。
因此,我们以总代价 使第 只宝可梦站在竞技场中。可以证明 是最小可能值。
在第二个测试用例中,初始站在竞技场中的第 只宝可梦的属性数组为 。
- 第一次操作:选择 ,,,将 永久增加 。现在第 只宝可梦的属性数组变为 。此操作代价为 。
- 第二次操作:选择 ,,雇佣第 只宝可梦,基于第 个属性与当前宝可梦决斗。由于 ,第 只宝可梦获胜。此操作代价为 。
- 第三次操作:选择 ,,雇佣第 只宝可梦,基于第 个属性与当前宝可梦决斗。由于 ,第 只宝可梦获胜。此操作代价为 。
因此,我们以总代价 使第 只宝可梦站在竞技场中。可以证明 是最小可能值。