最长不上升子序列(最长下降子序列)
O(nlogn)求出最长不上升子序列的长度 就是用f[i]来表示不上升子序列的长度为i时的最优结尾 遍历数组 当前数小于末尾时就加入数组,否则二分数组把当前数插入到最优结尾。
证明如下:
设y为被取代的数
如果y在末尾,由于y < a[i],所以y后面能接的不如a[i]多,y让位给a[i]可以让序列更长
如果y不在末尾,那y有生之年都不会再被用到了
这样也同时计算了新的序列(以a[i]为结尾的而不是y为结尾的),真正更新了序列的长度
设y为被取代的数
如果y在末尾,由于y < a[i],所以y后面能接的不如a[i]多,y让位给a[i]可以让序列更长
如果y不在末尾,那y有生之年都不会再被用到了
这样也同时计算了新的序列(以a[i]为结尾的而不是y为结尾的),真正更新了序列的长度