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 ạ?
Dãy LIS kết thúc tại i = (LIS kết thúc tại j), a[i]; mà mỗi LIS i chỉ chọn 1 LIS j thôi, nên cộng lại tất cả các
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?