1 条题解
-
0
最长不下降子序列题解
备注:表示长度为的序列。
普通动态规划
设表示以为结尾的最长不下降子序列的长度,那么每次枚举时,我们都要寻找前面接的数字,并使接上这个数字后最长不下降的子序列的长度最大。所以我们要枚举,并且满足,就等于符合条件且最大的。
时间复杂度为,会超时。正解动态规划
设表示长度为的不下降子序列的最后一个数的最小值,表示最长不下降子序列的长度,那么输入时有以下情况:
这时最长不下降子序列的长度将增加,而新的最长不下降子序列的最后一个数的最小值将是。
除上述情况以外
有可能是长度为的不下降子序列的最后一个数的最小值,因此用二分查找找到满足 的,并将替换为。如果不这么做,后面输入的有可能小于原来的,大于,此时不下降子序列的长度可增加,但由于未更新,所以程序不会这么做,这时答案会错误。
时间复杂度为。
- 1
信息
- ID
- 41
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者