Codeforces 中有一个问题在谈论“使 n 个礼物中的糖果和橘子的数量相等。你可以一次吃掉每个礼物中的一颗糖果或一个橘子。你需要找到使所有礼物相等所需的最少移动次数送了礼物。” 问题的正确解法是这样
for _ in range(int(input())):
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
mina = min(a)
minb = min(b)
nrm = 0
for i in range(n):
nrm = nrm + max(a[i] - mina, b[i] - minb)
print(nrm)
我做了另一个解决方案,就在那里
for _ in range(int(input())):
n = int(input())
a = sorted(map(int, input().split()))
b = sorted(map(int, input().split()))
nrm = 0
for i in range(n):
nrm = nrm + max(a[i] - a[0], b[i] - b[0])
print(nrm)
但是两个程序的输出结果不一样?
输入
5
3
3 5 6
3 2 3
5
1 2 3 4 5
5 4 3 2 1
3
1 1 1
2 2 2
6
1 1000000000 1000000000 1000000000 1000000000 1000000000
1 1 1 1 1 1
3
10 12 8
7 5 4
第一个解的输出
6
16
0
4999999995
7
我的解决方案的输出
5
10
0
4999999995
6