DP
文章平均质量分 62
从入门到入坑
等到OneNote容量不够, 再把存货搬上来
展开
-
AcWing 1212. 地宫取宝(dp)
题目描述 原题链接 分析 Y总经典集合角度分析DP: 字丑勿怪,直接上手写了 Y总视频讲解(需要权限) 实现 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; const int MOD = 1e9 + 7; const int N = 59; int n, m, K; int f[N][N][19][19]; int val[N][N]; int原创 2021-03-21 14:55:53 · 102 阅读 · 0 评论 -
AcWing 312. 乌龟棋 (线性DP)
题目描述 原题链接 分析 也可参考Y总视频讲解 实现 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; const int N = 359; const int M = 49; int n, m; int a[N], f[M][M][M][M], cnt[5]; int main() { cin >> n >> m;原创 2021-02-17 22:32:18 · 76 阅读 · 0 评论 -
AcWing 479. 加分二叉树 (区间DP)
题目描述 原题链接 分析 题目所求是一棵符合中序遍历且加分最高的二叉树, 而二叉树的加分 === 左子树的加分 ××× 右子树的加分 +++ 根的分数 假设求一棵根节点是kkk的加分最高的二叉树,由于根的分数已经确定,则要使其左子树加分最高且右子树加分最高 如何使其左子树加分最高呢?(右子树同理) 首先要在[1,k−1][1,k-1][1,k−1](为什么是[1,k−1]?[1,k-1]?[1,k−1]? 因为在中序序列中, 根节点左边是其左子树, 右边是其右子树)枚举左子树的根jjj, 且使以j原创 2021-02-03 16:43:08 · 112 阅读 · 0 评论 -
AcWing 288. 休息时间(环形dp 滚动数组优化)
题目描述 原题链接 分析 题目特殊在:每一天的第NNN小时和下一天的第111小时是相连的, 即一个环形 我们假设每一天的第NNN小时和下一天的第111小时不相连,则题目就变成了一个线性DP问题 很容易 设计出状态: f[i,j,0]f[i,j,0]f[i,j,0]表示只考虑只考虑前iii个小时,一共休息了jjj个小时, 并且第iii个小时没休息的所有方案的最大收益 f[i,j,1]f[i,j,1]f[i,j,1]表示只考虑前iii个小时,一共休息了jjj个小时, 并且第iii个小时在休息的所有方案的原创 2021-02-01 14:42:12 · 92 阅读 · 0 评论