1029. 两地调度
公司计划面试 2N
人。第 i
人飞往 A
市的费用为 costs[i][0]
,飞往 B
市的费用为 costs[i][1]
。
返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N
人抵达。
示例:
输入:[[10,20],[30,200],[400,50],[30,20]]
输出:110
解释:
第一个人去 A 市,费用为 10。
第二个人去 A 市,费用为 30。
第三个人去 B 市,费用为 50。
第四个人去 B 市,费用为 20。
最低总费用为 10 + 30 + 50 + 20 = 110,每个城市都有一半的人在面试。
提示:
1 <= costs.length <= 100
costs.length
为偶数1 <= costs[i][0], costs[i][1] <= 1000
这一题只需要将每个人去a地和去b地的花费相减,排序后让前n个去b地,后n个去a地
class Solution {
public:
int twoCitySchedCost(vector<vector<int>>& costs) {
int cha[101]={0},book[101]={0},sum1=0;
for(int i=0;i<costs.size();i++){
book[i]=i;
sum1+=costs[i][0];
sum1+=costs[i][1];
cha[i]=costs[i][1]-costs[i][0];
}
for(int i=1;i<costs.size();i++){
for(int j=0;j<i;j++){
if(cha[i]<cha[j]){
int t=cha[i];cha[i]=cha[j];cha[j]=t;
int t1=book[i];book[i]=book[j];book[j]=t1;
}
}
}
for(int i=0;i<costs.size()/2;i++){
sum1-=costs[book[i]][0];
}
for(int i=costs.size()/2;i<costs.size();i++){
sum1-=costs[book[i]][1];
}
return sum1;
}
};