最长不上升子序列(最长下降子序列)

O(nlogn)求出最长不上升子序列的长度 就是用f[i]来表示不上升子序列的长度为i时的最优结尾 遍历数组 当前数小于末尾时就加入数组,否则二分数组把当前数插入到最优结尾。

证明如下:

设y为被取代的数

如果y在末尾,由于y < a[i],所以y后面能接的不如a[i]多,y让位给a[i]可以让序列更长

如果y不在末尾,那y有生之年都不会再被用到了

这样也同时计算了新的序列(以a[i]为结尾的而不是y为结尾的),真正更新了序列的长度

 

posted @ 2021-02-27 17:57  大W  阅读(511)  评论(0)    收藏  举报