随笔分类 - 动态规划
摘要:题目链接 一道 dp 板子题。 只需要设 \(dp_{i,j}\) 为前 \(i\) 位 \(\bmod 3\) 为 \(j\) 的方案数的数量即可。 剩下的就看代码了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; #defin
阅读全文
摘要:题目链接 CF1272D Remove One Element 题意简述 给定一个长度为 \(n\) 的序列,你需要求出至多删除一个数后的这个序列的最长上升子串。 解题思路 首先我们可以想一下这题的弱化版,给定一个长度为 \(n\) 的序列,你需要求出至多删除一个数后的这个序列的最长上升子序列。 这
阅读全文
摘要:题目链接 一道 dp 的入门题。 \(O(2^n)\): 考虑直接爆搜,可以考虑到所有情况。 \(O(n^2)\): 考虑 \(dp\),设 \(dp_{i,j}\) 代表到达第 \(i\) 层第 \(j\) 个数所能达到的最大值。 状态转移方程为 \(dp_{i,j}=a_{i,j}+\max(d
阅读全文
摘要:题目链接 数字三角形的变形。 直接在原来的基础上加个判断 \(3\) 倍的就行了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; long long n,m,ans=-1e18,a[110][110],dp[110][110][5
阅读全文
摘要:题目传送门 一道小清新动态规划题,直接设 \(dp[i]\) 表示前 \(i\) 个鼹鼠最多能打到几个,然后状态转移方程也很好想了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; long long n,m,ans,dp[1001
阅读全文
摘要:题目传送门 一道算是 dp 的板子题了。 题意大概就是 01 背包 + 捆绑。 首先回顾一下 01 背包,一个比较基础的 dp 题,状态转移方程也很好想,是 \(dp[i][j]=\max(dp[i][j],dp[i-1][j-w[i]]+v[i])\)。 代码实现如下: 点击查看代码 #inclu
阅读全文

浙公网安备 33010602011771号