一道水题,没啥好说的,就是最后sum和的时候有点麻烦。
具体思路为:
总时间越短,优先级越高
总时间相等时,优先级相同
最后一项的相加:
第一项为:times[0][0] + times[0][1]
第二项为:times[1][0] + times[1][1] + ans[0] + ei[0]
ans[0] | ei[0] |
第三项为:times[2][0] + times[2][1] + ans[1] + ei[1]
ans[1] | |
ei[1] | |
第四项为:.....
完整代码:
# 输入数据
n = int(input())
times = []
sum1 = 0
for i in range(n):
times.append(list(map(int, input().split())))
sum1 = sum(times[i]) # 计算总时间
times[i].append(sum1)
times.sort(key=lambda x:x[3]) # 按照总时间从小到大排序
ans = [times[0][0] + times[0][1]]
for i in range(1, n):
ans.append(times[i][0] + times[i][1] + ans[i-1] + times[i-1][2])
print(sum(ans))