zoukankan      html  css  js  c++  java
  • 【leetcode】1029. Two City Scheduling

    题目如下:

    There are 2N people a company is planning to interview. The cost of flying the i-th person to city A is costs[i][0], and the cost of flying the i-th person to city B is costs[i][1].

    Return the minimum cost to fly every person to a city such that exactly N people arrive in each city.

    Example 1:

    Input: [[10,20],[30,200],[400,50],[30,20]]
    Output: 110
    Explanation: 
    The first person goes to city A for a cost of 10.
    The second person goes to city A for a cost of 30.
    The third person goes to city B for a cost of 50.
    The fourth person goes to city B for a cost of 20.
    
    The total minimum cost is 10 + 30 + 50 + 20 = 110 to have half the people interviewing in each city.
    

    Note:

    1. 1 <= costs.length <= 100
    2. It is guaranteed that costs.length is even.
    3. 1 <= costs[i][0], costs[i][1] <= 1000

    解题思路:我的方法是把costs按照costs[i][0] - costs[i][1]的差值从小到大排序,然后前面一半的人去A,后面一半的人去B。至于为什么这样做,我也说不上来,感觉。

    代码如下:

    class Solution(object):
        def twoCitySchedCost(self, costs):
            """
            :type costs: List[List[int]]
            :rtype: int
            """        
            def cmpf(item1,item2):
                d1 = item1[0] - item1[1]
                d2 = item2[0] - item2[1]
                return d1 - d2
    
            costs.sort(cmp=cmpf)
            res = 0
            for i in range(len(costs)):
                if i < len(costs)/2:
                    res += costs[i][0]
                else:
                    res += costs[i][1]
            #print costs
            return res
  • 相关阅读:
    点双连通分量模板
    Caocao's Bridges HDU
    边双连通分量模板
    夏令营501-511NOIP训练18——高三楼
    夏令营501-511NOIP训练17——蛇形矩阵
    夏令营501-511NOIP训练16——数字转换
    模板——最小费用最大流
    洛谷P1792——[国家集训队]种树
    XJOI夏令营501-511NOIP训练14——好朋友
    codeforces 1178E-Archaeology
  • 原文地址:https://www.cnblogs.com/seyjs/p/10765564.html
Copyright © 2011-2022 走看看