Given an unsorted sequence A={a0,a1,a2,......an-1} of n integers. How do I find the longest increasing sub-sequence of the given sequence. Is there any dynamic programming solution.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3857 |
| 2 | jiangly | 3810 |
| 3 | maroonrk | 3534 |
| 4 | tourist | 3528 |
| 5 | Kevin114514 | 3510 |
| 6 | turmax | 3411 |
| 7 | Um_nik | 3387 |
| 8 | Radewoosh | 3367 |
| 9 | heuristica | 3322 |
| 10 | strapple | 3317 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 157 |
| 2 | maspy | 150 |
| 3 | Um_nik | 144 |
| 3 | nik_exists | 144 |
| 5 | Errichto | 139 |
| 6 | adamant | 136 |
| 7 | maroonrk | 134 |
| 8 | DNR | 132 |
| 9 | AmShZ | 131 |
| 10 | Dominater069 | 129 |
| Название |
|---|



Do you need this solution?
A[i] - our sequence
DP[i] = the length of the LIS ending with element numbered i.
We'll keep track of vector V as follows:
V[j] = A[k], such that dp[k] = j and k is the largest number < i, satisfying this condition.
Suppose, we have found out all the dp[1..i-1], and V is up to date. How to find dp[i]? It's easy to find by binary search on V, isn't it? OK, find it, and don't forget to update V.
Start with dp[1] = 1 and V[1] = A[1] (1-based sequence)
I mean that when saying "By sorting all values we had before and binary search on them?".
1) override elements in V and
2) append elements to V.
You can try to solve it here: http://acm.tju.edu.cn/toj/showp2400.html