leetcode 1029 兩地排程(貪心)

2022-08-20 12:15:11 字數 1052 閱讀 5775

題目描述:

公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs[i][0],飛往 b 市的費用為 costs[i][1]。返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。

題解:

個人思路:為了近可能的降低費用,我們應該優先安排飛往a、b兩市費用差距最大的去費用較小的市,以此來降低整體費用。這麼做的話對差值的絕對值排序然後貪心的選就可以了。**如下:

class

solution

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$市。**如下: 

class

solution );

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...