#1033. 减法与重排
减法与重排
题目描述
Alice 为 Bob 想出了另一个谜题。Alice 带来了两个长度为 的数组 和 ,并允许执行以下两种操作:
- 选择任意下标 ()并将 减去 (即变为 )。此操作的执行时间为 秒。
- 以任意方式重新排列数组 中的所有元素。此操作的执行时间为 秒。
你的目标是将数组 转换为数组 。
Bob 希望尽快解开这个谜题。请帮助 Bob 确定解开谜题所需的最少时间。如果无论如何都无法转换成功,请输出 -1。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
对于每个测试用例:
- 第一行包含两个整数 和 ()—— 表示数组 和 的长度,以及第二种操作(重新排列)所需的时间。
- 第二行包含 个整数 ()—— 表示数组 的元素。
- 第三行包含 个整数 ()—— 表示数组 的元素。
输出格式
对于每个测试用例,输出一行一个整数,表示解开谜题所需的最少秒数;如果无法将数组 转换为数组 ,则输出 -1。
样例输入 1
6
3 5
5 2 3
2 3 4
3 3
1 2 3
4 5 6
4 4
4 5 2 3
3 5 1 2
6 4
2 4 5 3 6 8
5 8 3 1 2 5
5 11
5 8 11 14 17
16 12 10 10 6
3 5
20 14 20
12 18 17
样例输出 1
6
-1
3
8
-1
12
说明
样例解释
- 在第一个测试用例中,由于 ,我们无法仅使用减法操作将 转换为 。让我们以如下方式重新排列数组 的元素:,耗时 秒。现在只需要将 减一即可(耗时 秒)。总计在 秒内使数组 变得与数组 相等。
- 在第二个测试用例中, 的所有元素都小于 的所有元素。因为操作只能减少元素的值,这意味着 无法被转换为 。
- 在第三个测试用例中,你可以选择不进行重排,直接执行 次减法操作,从而得到答案 。如果你至少重排一次,时间将至少需要 秒,所以最佳答案是 秒。
- 在第六个测试用例中,数组可以被重排为:。可以计算出此时的总代价为 秒。
数据范围
- 对于所有测试点,保证 。
- 对于每个测试用例,保证 。
- 对于每个测试用例,保证 。
- 保证所有的输入数值均为整数。