线段树求LIS并统计最长子序列个数

如下面的题目为例(题目和代码在最后面),给定一个数列(长度最大为10000),求出最长的先增后减子序列长度及个数。作法是先求出以每个位置结尾的最长单增子序列长度以及以该位置开头的最长单减子序列长度,而后遍历全部位置找出最大先增后减子序列长度。node 以最长单增序列(LIS)为例,因为不只须要整个序列LIS的长度,还要保存以每一个位置为结尾位置的LIS长度。记以a[i]结尾的LIS长度为dp[i]
相关文章
相关标签/搜索