LC: 1066. Campus Bikes II
1066. Campus Bikes II
On a campus represented as a 2D grid, there are n workers and m bikes, with n <= m. Each worker and bike is a 2D coordinate on this grid.
We assign one unique bike to each worker so that the sum of the Manhattan distances between each worker and their assigned bike is minimized.
Return the minimum possible sum of Manhattan distances between each worker and their assigned bike.
The Manhattan distance between two points p1 and p2 is Manhattan(p1, p2) = |p1.x - p2.x| + |p1.y - p2.y|.
Example 1:
Input: workers = [[0,0],[2,1]], bikes = [[1,2],[3,3]]
Output: 6
Explanation:
We assign bike 0 to worker 0, bike 1 to worker 1. The Manhattan distance of both assignments is 3, so the output is 6.Example 2:
Input: workers = [[0,0],[1,1],[2,0]], bikes = [[1,0],[2,2],[2,1]]
Output: 4
Explanation:
We first assign bike 0 to worker 0, then assign bike 1 to worker 1 or worker 2, bike 2 to worker 2 or worker 1. Both assignments lead to sum of the Manhattan distances as 4.Example 3:
Input: workers = [[0,0],[1,0],[2,0],[3,0],[4,0]], bikes = [[0,999],[1,999],[2,999],[3,999],[4,999]]
Output: 4995Constraints:
n == workers.lengthm == bikes.length1 <= n <= m <= 10workers[i].length == 2bikes[i].length == 20 <= workers[i][0], workers[i][1], bikes[i][0], bikes[i][1] < 1000All the workers and the bikes locations are unique.
The Essence:
Es ist hier nicht ausreichend, dass man lokale und gierige Entscheidungen trifft. Es ist aber zu rechenintensiv, dass man alle mögliche Paarpermutationen verarbeitet. Man kann jedoch bemerken, dass einige Teilentscheidungen wiederholt getroffen und berechnet werden. Dafür kann man vielleicht getroffene Teilentscheidungen speichern und wiederverwenden, wenn sie wieder vorkommen. Die Entscheidung, Arbeiter den letzten 2 von 5 Fahrrädern zuzuordnen, kann beispielsweise gespeichert und dann wieder in einem anderen Entscheidungsweg verwendet werden.
Details:
Das Speichern von Teilentscheidungen kann durch ein Arrays erfolgen, das den Abstand für diese bestimmten Entscheidungen speichert. Dies kann implementiert werden, indem die Entscheidung als binäre Maske interpretiert wird, wobei 1 und 0 Bits darstellen, ob ein Fahrrad genommen wurde oder nicht. Der Rest des Entscheidungsverfahren kann mittels Rekursion implementiert werden.
Solution(s) and Further Explanation:
Default Code:
Last updated