題目描述:
公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs[i][0],飛往 b 市的費用為 costs[i][1]。返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。
題解:
個人思路:為了近可能的降低費用,我們應該優先安排飛往a、b兩市費用差距最大的去費用較小的市,以此來降低整體費用。這麼做的話對差值的絕對值排序然後貪心的選就可以了。**如下:
classsolution
int twocityschedcost(vectorint>>&costs)
if(cnt1 >= n/2
)
if(cost[0] < cost[1
])
else
}return
ans;
}};
官方思路:這樣看這個問題,首先將這$2n$個人全部安排飛往$b$市,再選出$n$個人改變他們的行程,讓他們飛往$a$市。如果選擇改變乙個人的行程,那麼公司會額外付出$price_a - price_b$的費用,這個費用可正可負。因此最優的方案是選出$price_a - price_b$最下的$n$個人飛往$a$市。**如下:
classsolution );
int total = 0
;
int n = costs.size() / 2
;
//to optimize the company expenses,
//send the first n persons to the city a
//and the others to the city b
for (int i = 0; i < n; ++i) total += costs[i][0] + costs[i + n][1
];
return
total;
}};
leetcode 1029 兩地排程
兩地排程 公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。示例 輸入 10,20 30,200 400,50 30,20 輸出 110 解釋 第乙個人去 a 市,...
1029 兩地排程
題目描述 公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達 示例 輸入 10,20 30,200 400,50 30,20 輸出 110 解釋 第乙個人去 a 市,...
1029 兩地排程
公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。示例 輸入 10,20 30,200 400,50 30,20 輸出 110 解釋 第乙個人去 a 市,費用為 1...