学的如梦似幻的= =
原理是明白了,和别的知识点,或者再深入一点一结合。我做题就…………………………跟活在梦里一样
- 在理解LIS时一个需要注意的问题:
LIS问题具体的解决的是最长上升子序列,但是两种模板方法(复杂度为n^2和nlogn)都不会记录最长上升子序列状态,它只是一个过程。
简单地说,例如这个序列 2 3 4 1 5
它的最长上升子序列为 2 3 4 5,但是,在nlogn的方法中,最后那个存数的数组会是1 2 3 5。这就是说为什么只是个过程而不是存储了最长上升子序列的状态。
- 关于两种方法简短分析:
O(n^2)的方法就是双重循环跑一遍,我感觉可能不是很常见,因为题目中的数一多,它就肯定要TLE=。=。
O(nlogn)的方法是基于上一种方法的,不过,在查数的时候使用了二分查找,所以时间少了很多。(查找时可以直接用upper_bound和lower_bound)
- 部分题目
关于O(n^2)的方法:模板+题目:HDOJ 1257 最少拦截系统(=。=这个题也有一点变体,凑和着看吧)
进阶版题目:HDOJ 1051 Wooden Sticks(有一点点变化)
关于O(nlogn):模板+题目:HDOJ 5748 Bellovin(纯模板)
进阶版题目:HDOJ 1025 Constructing Roads In JGShining's Kingdom(对于边界问题和上面的模板有点区别)
上面给的几个题都是我今天刚学习做的简单题OTZ
也不是很难,好好看一下很快就能理解。想要深入学习还是要自己加油再多做一些题……