随笔分类 -  动态规划

摘要:acwing 895.最长上升子序列 https://www.acwing.com/problem/content/897/ 1 #include <iostream> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int N = 阅读全文
posted @ 2020-04-14 11:26 dzcixy 阅读(152) 评论(0) 推荐(0)
摘要:acwing 135.最大子序和 https://www.acwing.com/problem/content/137/ 假设当前序列的最后一个数字是$a[k]$, 那么问题就变成求从$a[k-m]$到$a[k]$的长度为$m$的序列中,序列和最大的。 要求区间的和,需要预处理一个前缀和数组$s$, 阅读全文
posted @ 2020-04-13 16:41 dzcixy 阅读(179) 评论(0) 推荐(0)
摘要:acwing 1081.度的数量 https://www.acwing.com/problem/content/1083/ 题意:找出区间$(X, Y) $中,用$B$进制表示并且只有$K$个1的数有多少。 类似前缀和的思想,可以先求$0$到$Y$中满足条件的数的个数,减去 $0$到$X$中满足条件 阅读全文
posted @ 2020-04-12 18:09 dzcixy 阅读(147) 评论(0) 推荐(0)
摘要:acwing 1027.方格取数 https://www.acwing.com/problem/content/1029/ 对于走一次,容易得到状态转移方程为:$f[i][j] = max(f[i-1][j], f[i][j-1]) + w[i][j]$。 而对于走两次时,设定状态为$f[i_1][ 阅读全文
posted @ 2020-04-11 17:35 dzcixy 阅读(200) 评论(0) 推荐(0)
摘要:acwing 1072.树的最长路径 https://www.acwing.com/problem/content/1074/ 如何在一颗有边权的树上求树的直径?方法是:任取树上一点,求出距离该点距离的最大值和次大值,相加即是路径, 遍历所有点,求出最长的路径。 如何在一颗没有边权的树上求树的直径? 阅读全文
posted @ 2020-04-11 11:25 dzcixy 阅读(201) 评论(1) 推荐(0)
摘要:acwing 282.石子合并 https://www.acwing.com/problem/content/284/ ①因为我们枚举的划分线是左边部分包含该划分点,所以划分点$k$是可以等于$i$的,但是不包含$j$,所以划分点$k$不能等于$j$。 ②为了使在计算当前状态的时候,所需要的状态已经 阅读全文
posted @ 2020-04-09 18:31 dzcixy 阅读(140) 评论(0) 推荐(0)
摘要:三种初始化方式: ①当体积最多是$j$的时候:数组$f$全部初始化为$0$,且保证体积一定大于等于$0$$(memset(f, 0, sizeof f), v >= 0)$。 ②当体积恰好是$j$的时候:除了第一个元素,数组$f$全部初始化为无穷大,且保证体积一定大于等于$0$$(memset(f, 阅读全文
posted @ 2020-04-05 17:30 dzcixy 阅读(181) 评论(0) 推荐(0)