关于最长上升子序列啥时候该用upper_bound or lower_bound

  • 维护的是一个严格单增的序列:则需要找到单调栈中第一个大于等于他的数(lower_bound),如果直接找第一个大于他的数找到替换,那么当单调栈中存在一个和他相等的数,则单调栈不再严格单增
  • 维护的是一个非减的序列:则需要找到第一个大于它的数(upper_bound),找到后替换即可,因为这样提供一个更多相等序列的机会,比如单调栈中是1 2 2 3,而当前元素是2 ,那么新的单调栈是1 2 2 2,而不应该是1 2 2 3
posted @ 2022-08-28 08:44  翔村亲亲鸟  阅读(19)  评论(0编辑  收藏  举报