![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 67
洞·爺·湖
No one is an island,entire of itself;never send to know for whom the bell tolls.It told for thee.
展开
-
最长上升子序列 II(LIS)————二分优化
题目链接https://www.acwing.com/problem/content/898/思路 这题说是dp,但是分析完之后更像贪心了,首先举个例子比如一个序列:3 1 2 1 8 5 6。(后面下标从1开始计)那么对于 a [ 1 ]和a [ 2 ]来说,如果上升子序列长度为2,那么能接在 a [ 1 ]后面的也一定能接在 a [ 2 ]后面,因为a [ 2 ] < a[ 1 ]。以此思想,引出我们 dp数组 f 的状态原创 2021-01-25 11:38:54 · 593 阅读 · 0 评论 -
石子合并——区间dp入门题
题目链接https://www.acwing.com/problem/content/284/思路 闫氏dp分析法,先上图。 状态表示图中已经说的很清楚了,说说状态计算,我们以最后一次合并的两堆的分界线来划分,假定位置为k。那么自然的分界线左边的石子应该是(i,k)右边应该是(k+1,j),然后我们再将所有分法的最后一次划分都去掉,这样相当于所有元素一起减去一原创 2021-01-25 09:07:17 · 153 阅读 · 0 评论 -
最长公共子序列(LCS)
题目链接https://www.acwing.com/problem/content/899/思路 闫氏dp分析法,先上图(感觉放y总照片不太好,就划掉了) 状态表示图中已经说得很清楚了,这里状态划分以是否取a序列中的第 i 个数和b序列中的第 j 个数作为划分依据,很明显能划分成四种情况,图中椭圆的0,1代表的意思我解释一下。 &nb原创 2021-01-25 02:32:41 · 155 阅读 · 0 评论 -
最长上升子序列 I(LIS)
题目链接https://www.acwing.com/problem/content/897/思路闫氏dp分析法,先上图 状态表示图中已经说明,关于状态划分,f [ i ]表示的是所有以第i个数结尾的上升子序列的集合,那么这个集合的所有元素一定都是以第 i 个数结尾的,我们的划分与背包有点相似,以第(i-1)个数是哪个数来分类,那么可以分成: 没有第(i-1)原创 2021-01-25 01:52:15 · 223 阅读 · 0 评论 -
线性dp入门经典题——数字三角形——AcWing
题目链接https://www.acwing.com/problem/content/900/思路闫氏dp法:所以状态转移方程就是f [ i ] [ j ] = max(f [ i - 1 ][ j - 1 ] , f [ i - 1 ][ j ]) + a [ i ] [ j ] 。需要注意的是在初始化dp数组的时候要多处理一列,因为处于边界的值会访问边界外的值。c++代码#include<bits/stdc++.h>using namespace std;const in原创 2021-01-12 21:37:05 · 166 阅读 · 0 评论 -
ACboy needs your help————杭电OJ
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1712思路分组背包模板题(刚开始忘了清空dp数组,一直WA,QAQ),压缩成一维后f[j]表示在只能选 i 门的情况下,不超过 j 天的收益,c++代码#include<bits/stdc++.h>using namespace std;const int N=105;int n,m;int f[N];int main(){ while(1) { s原创 2020-12-30 20:31:20 · 110 阅读 · 0 评论