科大讯飞 CrossFire 比赛分组问题:实力差最小化
科大讯飞 CrossFire 比赛分组问题:实力差最小化
Compute, Cubercsl, SuperSodaSea, Ybmj 准备组队参加 '科大讯飞' 赞助的 CrossFire 比赛。
这场比赛需要两人一队组队参加,他们不知道怎么分组。已知他们的 CrossFire 分数分别为 a, b, c, d,现在想要把他们两两分为一队,使得他们的实力比较平均,也就是两队的实力差尽量小。
这里定义两队的实力差为每队的 CrossFire 分数之和的差值,现在他们想要知道这个实力差最小是多少。
输入描述:
仅一行,包含四个整数 a, b, c, d (1 ≤ a, b, c, d ≤ 3681),中间以空格分隔,分别表示四个人的 CrossFire 分数。
输出描述:
在一行输出一个整数,表示两个队伍实力差的最小值。
示例1
输入
2 1 3 4
输出
0
示例2
输入
2263 2110 2172 2109
输出
90
思路:
首先,将四个人的分数从小到大排序,即 a, b, c, d。
然后,将 a 和 d 分别分到两个队伍中,计算两个队伍的实力差,即 a+d 和 b+c 的差值。
最后,输出实力差的最小值。
具体实现步骤:
- 读取四个人的分数 a, b, c, d。
- 将 a, b, c, d 排序。
- 计算实力差的最小值,即 min(a+d-b-c, a+b-c-d, a+c-b-d)。
- 输出实力差的最小值。
示例代码 (Python):
a, b, c, d = map(int, input().split())
# 对分数进行排序
scores = sorted([a, b, c, d])
a, b, c, d = scores[0], scores[1], scores[2], scores[3]
# 计算实力差的最小值
min_diff = min(a + d - b - c, a + b - c - d, a + c - b - d)
# 输出结果
print(min_diff)
原文地址: https://www.cveoy.top/t/topic/RAL 著作权归作者所有。请勿转载和采集!