![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线性dp
线性dp
hhx729
这个作者很懒,什么都没留下…
展开
-
P1020 导弹拦截(线性dp)
题意: 第一问:求一个最长不上升子序列 第二问:求有多少个不上升子序列 题解: 第一问:直接把数组倒过来求解最长不下降子序列就好了(注意要用nlog(n)复杂度的求法) 第二问:用以下方式维护数组q,cnt表示有多少个不下降子序列。保证的是每个不上升子序列中的最后一个数 1.若x大于q中的每一个数,则新建一个不上升子序列,放入x 2.否则找到q中大于或者等于x的最小的数,替换掉,不改变x与被替换数左右相邻两数的相对大小关系,所以q一定是单调递增。 #include<bits/stdc++.h>原创 2020-11-10 16:28:15 · 219 阅读 · 0 评论 -
P2758 编辑距离(线性dp)
题意: 设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种: 1、删除一个字符; 2、插入一个字符; 3、将一个字符改为另一个字符; 题解: dp[i][j]表示将a[1 ~ i]变成b[1 ~ j]的最小操作次数 删除操作:dp[i-1][j] 插入操作:dp[i][j-1] 替换操作: 1.如果a[i]==b[j](说明当前最后一个字符相等) dp[i-1][j-1] 2.否则 dp[i-1][j-1]+1 #include<bits/s原创 2020-11-10 15:34:43 · 410 阅读 · 0 评论