Em đang mắc kẹt ở bài Number of Longest Increasing Subsequence - LeetCode và đang tham khảo cách giải thích ở trang Longest increasing subsequence - Algorithms for Competitive Programming (cp-algorithms.com)
Phần giải thích:
The number of ways to form a longest increasing subsequences ending in a[i] is the sum of all ways for all longest increasing subsequences ending in j where d[j] is maximal. There can be multiple such j , so we need to sum all of them.
Em đã hoàn thành bài Longest Increasing Subsequence - LeetCode dùng segment tree nhưng đến bài trên thì bí không hiểu lắm cách giải thích ở trên. Mọi người giải thích rõ ràng nhất cách giải thích ở trên giúp em với ạ!
Cách hiểu của em: Với mỗi a_i, ta xét các index j < i sao cho tại đó có thể thành lập được LIS(d[j] = max_len, d là mảng các độ dài của local-LIS thành lập tại j trong A). Tổng số cách thành lập LIS ở các vi trí này sao mà bằng số cách thành lập LIS kết thúc bằng a_i được ạ?