LIS (nlogn)

Posted wifimonster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LIS (nlogn)相关的知识,希望对你有一定的参考价值。

dpdp+树状数组O(n lg n)O(n lg n)

注意到我们在状态转移的时候要枚举f[j]f[j]的最大值来转移,我们可以考虑使用数据结构来维护从而优化一下,只要是支持单点修改和区间最值查询的数据结构都可以这么做,分块(O(nn??√))(O(nn))和树状数组(O(n lg n))(O(n lg n)),线段树(O(n lg n))(O(n lg n))之类的都行,但是因为树状数组比较好写,所以我们只讲解树状数组的写法

  1. 先按权值排序,排序之后再查询序号前最大的f[j]f[j]来转移,但是有一点要注意,我们求的是LIS,是严格上升的,所以我们遇到重复的权值的时候应该要放在最后一次性处理,不然后面的重复了的f[]f[]就能够用前面相同的元素来转移,导致最后的答案是错误的

以上是关于LIS (nlogn)的主要内容,如果未能解决你的问题,请参考以下文章

关于LIS和LCS问题的o(nlogn)解法

LIS (nlogn)

LIS最长上升子序列O(nlogn)算法

hdu 1025 LIS nlogn复杂度

lis最长上升子序列 (kuangbin nlogn)

最长上升子序列 LIS nlogn