The (longest increasing subsequence) problem can be solved with (dynamic programming), and optimized with (binary indexed tree).
The LIS problem can be solved with DP, and optimized with BIT.