Maximum Length of Pair Chain
Last updated
Last updated
You are given n
pairs of numbers. In every pair, the first number is always smaller than the second number.
Now, we define a pair (c, d)
can follow another pair (a, b)
if and only if b < c
. Chain of pairs can be formed in this fashion.
Given a set of pairs, find the length longest chain which can be formed. You needn't use up all the given pairs. You can select pairs in any order.
Example 1:
Note:
The number of given pairs will be in the range [1, 1000].
This is a typical scheduling problem. Use a greedy algorithm that repeatedly selects the time-slots with the earliest end time.
Proof: Let be the greedy and optimal solutions, respectively. Let be the first time-slot that they differ. We can convert to to get a "greedier" optimal solution . By doing the conversion repeatedly we can eventually convert to . Therefore, is also an optimal solution.
(Implementation optimization trick: because the sorting dominates the running time, convert pairs
to type vector<pair<int, int>>
to speed up.)