动态规划
动态规划(Dynamic Programming, DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
由于动态规划并不是某种具体的算法,而是一种解决特定问题的方法,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。
liamaking
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
codeforces 1625.C. Road Optimization DP
https://codeforces.com/contest/1625/problem/C C. Road Optimization time limit per test3 seconds memory limit per test128 megabytes inputstandard input outputstandard output The Government of Mars is not only interested in optimizing space flights, but also原创 2022-01-15 21:28:28 · 708 阅读 · 0 评论 -
ST表模板
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 100; int f[N][100]; int mn[N]; int n, m; int rmq(int l, int r) { int k = mn[r - l + 1]; return max(f[l][k], f[r - (1 << k) + 1][k]); } int main() { scanf("%d%d", &原创 2022-01-15 21:02:40 · 296 阅读 · 0 评论 -
最长上升子序列(线性DP)
最长上升子序列 ------来源acwing 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤1000, −10^9≤数列中的数≤10 ^ 9 输入样例: 7 3 1 2 1 8 5 6 输出样例: 4 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e3+10;原创 2021-06-08 20:30:16 · 158 阅读 · 0 评论 -
背包问题求方案数
背包问题求方案数 -------来源acwing 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。 输出格式 输出一个整数,表示原创 2021-06-08 01:16:24 · 194 阅读 · 0 评论 -
完全背包问题
完全背包问题-------来源acwing 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。 输出格式 输出一个整数,表示最大价值。 数据范围 0<N,V≤1000 0<vi,原创 2021-06-07 16:20:55 · 103 阅读 · 0 评论 -
01背包问题
问题 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。 输出格式 输出一个整数,表示最大价值。 数据范围 0<N,V≤1000 0<vi,wi≤1000 输入样例 4 5 1 2原创 2021-06-07 16:15:16 · 121 阅读 · 0 评论
分享