zoukankan      html  css  js  c++  java
  • 关于LIS与Dilworth定理

    LIS在线性动态规划中可以说是重要的一环,许多题目都需要配合上LIS进行求解,同时在求解时也可能用到Dilworth定理,下面对此进行总结。

    首先是经典例题,导弹拦截 看清题意后对于第一问可以得知是求一个最长不升子序列,而对于第二问呢?稍加思考再辅以一些基础的证明可以得知是求最长上升子序列长度

    对于第一问,我们可以选择手动二分或者使用$lower\_{}bound$函数,但是要重载cmp,因为单纯的lower_bound仅适用一个上升子序列中,upper_bound同理,如何重载呢,就相当于我们定义5<3一样,重新定义>号,或者使用greater<int>().利用dp1[i]记录长度为i的不上升序列的尾元素,如果小于就len++否则就查找,在下降序列中找到一个大于当前数的位置。对于第二问也是一样的道理,甚至省去了重载。

    木棍加工则是一个延伸,确保你思考清楚了导弹拦截的思想后再去做。基础实现就是我们先保证满足长度条件即排序,在对宽度条件进行处理。也就是在宽度序列中求我们最少能将宽度序列划分为几个不升子序列,这里用到$Dilworth$定理,根据Dilworth定理,该答案与该序列的最长不降子序列长度相同,故进而求解。

  • 相关阅读:
    Linux vim的四中模式
    Linux 打包压缩解压缩
    Linux 写入查看文本
    Linux 文件复制和移动
    Linux 创建删除目录
    Linux cd命令
    vim 文本替换
    linux工作中使用命令
    is 和 == 的区别
    再次复习python
  • 原文地址:https://www.cnblogs.com/delta-cnc/p/12766108.html
Copyright © 2011-2022 走看看