''' 解题思路: 公司首先将这 2N2N 个人全都安排飞往 BB 市,再选出 NN 个人改变它们的行程,让他们飞往 AA 市。 如果选择改变一个人的行程,那么公司将会额外付出 price_A - price_B 的费用,这个费用可正可负 最优的方案是,选出 price_A - price_B 最小的 NN 个人,让他们飞往 A 市,其余人飞往 B 市。 ''' class Solution: def twoCitySchedCost(self, costs: List[List[int]]) -> int: n = len(costs) #print(costs) s = 0 dis = [] for i in range(n): s += costs[i][0] dis.append(costs[i][0] - costs[i][1]) #print(s) dis = sorted(dis, reverse=1) #print(dis) s -= sum(dis[:n//2]) #print(s) return s costs = [[515,563],[451,713],[537,709],[343,819],[855,779],[457,60],[650,359],[631,42]] t = Solution().twoCitySchedCost(costs) print(t)