[ACM 学习] 最长上升子序列

LIS(最长上升子序列)的三种经典求法 - 一只不咕鸟 - 博客园 (cnblogs.com)

理解一下第三种方法(贪心+二分查找)

因为构建的是上升子序列,所以是可以用二分查找找到最大的小于当前 A[i] 的在子序列中的 F[j],并更新 F[j+1]

注:刚开始看的时候还在疑惑只换一个的话,后面的那些怎么办,后来发现,其实我们想要的只是长度,不关注子序列的具体数字,换下来并不影响已记录的最长长度,并且,还为后面提供了更长的可能(贪心思想:更小的元素可以接更多的)

这段二分查找的代码也很有意思,只要还是 a[i] 小于等于f[mid](为什么包括等于,因为对于严格小于来说,等于还是大了),就到左边去,最后 l 的位置会在严格小于 a[i] 的元素下一个坐标那(出while是因为 l>r 所以要想想是要l的数还是r的数,作为比较的数可以理解成大小在 l 与 r 中间)。

(看来我要重新理解下二分查找了)

相关推荐

  1. 公共上升序列——DP

    2024-01-16 20:02:02       34 阅读
  2. B3637 上升序列

    2024-01-16 20:02:02       9 阅读
  3. 70、上升序列

    2024-01-16 20:02:02       5 阅读
  4. 71、上升序列II

    2024-01-16 20:02:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 20:02:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 20:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 20:02:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 20:02:02       20 阅读

热门阅读

  1. [Linux]查看虚拟内存占用情况

    2024-01-16 20:02:02       37 阅读
  2. SpringBoot 基础介绍以及相关可实现的功能思路

    2024-01-16 20:02:02       31 阅读
  3. Dubbo分层设计之Serialize层

    2024-01-16 20:02:02       25 阅读
  4. python爬虫04-常见反爬

    2024-01-16 20:02:02       34 阅读
  5. Linux 挂载卸载 设备

    2024-01-16 20:02:02       33 阅读