浅谈线性DP

13 篇文章 0 订阅
10 篇文章 0 订阅

线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移

不像背包问题、区间DP等有固定的模板(但是模版也相对固定,更多的是要通过题目来思考

线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式或等式

目的求目标函数的最大值或最小值

(直观理解来看,只要状态转移方程能写成分段函数的,在某种意义上都能说他是线性DP,但本质仍是需要去探究信息流动的过程)

因此,除了少量问题(如:LIS、LCS、LCIS等)有固定的模板外,大部分都要根据实际问题来推导得出答案

常见问题

1.序列问题最长不下降序列拦截导弹友好城市合唱队形最长公共子序列回文字符串最长公共子上升序列

2.字符串编辑距离编辑距离相似基因

3.最大和问题(最大连续字段和最大子矩阵问题加强版方格取数数字三角形)

4.其他(不一定是线性DP)(数的划分奇怪电梯Crossing River机器分配尼克的任务Increasing Frequency

序列问题

序列问题一般是研究某个序列S的子序列T的问题

所谓子序列,就是从一串元素序列S中,不改变顺序地,抽取任意个元素

构成了新序列T,T就是S的子序列

LIS 最长不下降子序列

LIS问题(Longest Increasing Subsequence),最长上升子序列

其一般为求最长下降子序列或是最长上升子序列

用DP[i]表示A[i]为结尾的最长上升子序列的长度,则有状态转移方程:

 寻找边界条件:f[i]=1

模板如下:

 

合唱队形

[NOIP2004 提高组] 合唱队形 - 洛谷

题目简述

N位同学排成一排,要求同学们从左到右先递增再递减(不可以相等)问至少需要几位同学出列,剩下的同学才能满足要求?

约束条件

N≤100

从左往右求一个最长上升dp1[ ],从右往左求一个最长上升dp2[ ],然后枚举每个点i,求n-(max(dp1[i]+dp2[i])-1)

LCS 最长公共子序列

LCS问题(Longest Common Subsequence),求序列的最长公共子序列

寻找边界条件:f[0][ ]=0 |f[ ][0]=0

模板如下:


 

*最长公共上升子序列 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值