LIS问题(最长上升子序列)与导弹拦截

本文探讨了最长不下降子序列(LMS)问题,它涉及到寻找序列中的单调子序列。LMS问题可以扩展到偏序集和导弹拦截问题。文中详细解释了动态规划和单调栈的方法来解决LIS问题,并给出了一个导弹拦截的例子,其中Q1要求求出最长不下降子序列,Q2考察了如何使用最少的拦截系统拦截所有导弹。动态规划和贪心策略在这里起到了关键作用。
摘要由CSDN通过智能技术生成

(前言)最长上升子序列 L I S ( l o n g e s t   i n c r e a s i n g   s u b s e q u e n c e ) LIS(longest\, increasing\, subsequence) LIS(longestincreasingsubsequence)我其实觉得可以拓展名称为最长单调子序列 L M S ( l o n g e s t   m o n o t o n o u s   s u b s e q u e n c e ) LMS(longest \,monotonous \,subsequence) LMS(longestmonotonoussubsequence)。另外 L M S LMS LMS还可以拓展为偏序集问题,详见这位大佬的博客——偏序集,Dilworth定理与导弹拦截

定义

最长单调子序列就是指在一段序列中,可以从左到右不改变左右顺序的选出若干个数,使他们满足某种单调关系,并求出最大值,而最长上升子序列就是其中的一种。

解读与分析

这种满足单调性的问题,我们一般尝试着去找单调的传递性.如LIS我们就利用他的单调,比如:将一段LIS存储到一个数组里最小值一定在数组的最右侧等。又或者是利用单调队列,单调栈这种对单调性有要求的特殊处理方式进行维护和求得所需的值。
然后由于是传递性问题,我们还往往可以选择DP进行转移。
为了和下面的例题契合,我们接下来讨论的是 最长不下降子序列而不是最长上升子序列
f i f_i fi为以 a i a_i ai为结尾的最长不下降子序列的长度
转移方程
f i = m a x j = 1 , a i > a j i − 1 f j + 1 f_i = max_{j=1,a_i > a_j}^{i-1}f_j + 1 fi=maxj=1,ai>aj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值