知识点:
1.头文件#include<algorithm>
2.对象:有序数组或容器
3.用处:lower_bound()返回值为第一个大于等于key的值的位置
4.格式:
数组类型(注意数组下标从0开始)
lower_bound(数组名,数组名+数组size(),key)-数组名
vector类型
返回lower_bound(a.begin(),a.end(),key)-a.begin();
类似的,有upper_bound()返回最后一个大于等于key的值的位置
回到我们关注的最长上升子序列中来
优化思路按照上面提到的知识点:二分!!
思路:模拟一个单调栈,每遇到一个比栈顶大的元素就放回栈里。如果比栈顶小,就二分查找前面“最该被换掉的元素”,用新数去更新前面的元素
原文:https://www.cnblogs.com/EVANGELION-01/p/14826306.html