貪心策略easy之:兩地調度

公司計劃面試 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,每個城市都有一半的人在面試。

從小到大排列 costs[i][0]-costs[i][1] (即i去A市與去B市的車票差額)。序列前面的人去A市花銷更小,序列後面的人去B市花銷更小。

static bool cmp(vector<int>a, vector<int>b) {
	return (a[0] - a[1] )<( b[0] - b[1]);
}
int twoCitySchedCost(vector<vector<int>>& costs) {
	sort(costs.begin(), costs.end(), cmp);
	int sum = 0;
	int i;

	for (i = 0; i < costs.size() / 2; i++) sum += costs[i][0];
	for (; i < costs.size(); i++) sum += costs[i][1];
	return sum;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章