天池 在线编程 安排面试城市(贪心)

文章目录

1. 题目

来源:https://tianchi.aliyun.com/oj/210874425247820050/215397455965131520

今天有N个面试者需要面试,公司安排了两个面试的城市A和B,每一个面试者都有到A城市的开销costA和到B城市的开销costB。

公司需要将面试者均分成两拨,使得 total cost最小。

N是偶数
2<=N<=1e5
答案确保在int范围内
1<=costA,costB <=1e6

说明
It is required that the number to go to A is equal to the number to go to B

示例
输入: cost = [[5,4],[3,6],[1,8],[3,9]]
输出: 14
说明: 第一个和第二个人去B城市,剩下的去A城市

2. 解题

  • 差值小的去A城市
class Solution {
public:
    /**
     * @param cost: The cost of each interviewer
     * @return: The total cost of all the interviewers.
     */
    int TotalCost(vector<vector<int>> &cost) {
        // write your code here
        sort(cost.begin(), cost.end(),[&](auto &a, auto &b){
            return a[0]-a[1] < b[0]-b[1];// 差值小的去A城市
        });
        int sum = 0;
        for(int i = 0; i < cost.size(); ++i)
        {
            if(i < cost.size()/2)
                sum += cost[i][0];// 差值小的去A城市
            else
                sum += cost[i][1];
        }
        return sum;
    }
};

603ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页