随笔分类 - 蓝桥杯备考 / acwing网课 / 动态规划
摘要:线性dp 动态规划步骤: 1.状态表示 用几维度的数组,每一维度的意思。 2.状态计算 状态转移方程 题目: 数字三角形 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8
阅读全文
摘要:背包问题(物品下标从1开始) 0~1背包模版: 题目一般是要求: 给定一个容量给定的背包(就是物品体积和小于容量),然后有N个物品,每个的价值和每个的体积,然后每个物品能用1次或0次求最大价值。 方法步骤: (1)状态表示:一般用二维数组 f[i][j]表示从前i个物品选体积小于等于j的最大价值。
阅读全文
摘要:题目: 查看代码 #include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 1e3+7; const ll mod = 1e5+7; int n, s; int dp[N][N], a[N]; i
阅读全文
摘要:题目: 查看代码 #include <iostream> using namespace std; int a[100006]; int dp[100006][64];//到第i个数为止异或和 int main() { int n,x; cin>>n>>x; for(int i=1;i<=n;i++
阅读全文
摘要:#include <iostream> using namespace std; //dp[i][j]表示第i种花位置,第j个位置为止 long long int dp[120][120]; long long int a[160]; int main() { int n,m; cin>>n>>m;
阅读全文
摘要:题目:题目: #include<iostream> #include<cstdio> using namespace std; int n,k,dp[1000005]; int main() { scanf("%d%d",&n,&k); for(int i=1;i<=k+1;i++) dp[i]=i
阅读全文
摘要:#include <iostream> using namespace std; const long long int N=1e9+7; bool a[100006];//是否坏 int f[100006];//到这级台阶的方案数 int main() { int n,m;//n个台阶坏了m个台阶
阅读全文
摘要:上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走)。 第一行包括一个整数N,表示有N行,接下来输入数字三角形 输入例子: 5 7 3 8 8 1 0 2 7 4
阅读全文