动态规划
动态规划(Dynamic Programming, DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
由于动态规划并不是某种具体的算法,而是一种解决特定问题的方法,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。
liamaking
这个作者很懒,什么都没留下…
展开
-
codeforces 1625.C. Road Optimization DP
https://codeforces.com/contest/1625/problem/CC. Road Optimizationtime limit per test3 secondsmemory limit per test128 megabytesinputstandard inputoutputstandard outputThe Government of Mars is not only interested in optimizing space flights, but also原创 2022-01-15 21:28:28 · 495 阅读 · 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 · 219 阅读 · 0 评论 -
最长上升子序列(线性DP)
最长上升子序列------来源acwing给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−10^9≤数列中的数≤10 ^ 9输入样例:73 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 · 85 阅读 · 0 评论 -
背包问题求方案数
背包问题求方案数-------来源acwing有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示原创 2021-06-08 01:16:24 · 70 阅读 · 0 评论 -
完全背包问题
完全背包问题-------来源acwing有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,原创 2021-06-07 16:20:55 · 38 阅读 · 0 评论 -
01背包问题
问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 2原创 2021-06-07 16:15:16 · 60 阅读 · 0 评论