![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
5.动态规划-模板
动态规划
阿斯卡码
这个作者很懒,什么都没留下…
展开
-
8.记忆化搜索(模板)
记忆化搜索一.滑雪一.滑雪题目来源:滑雪#include <algorithm>#include <cstring>#include <iostream>using namespace std;const int N = 3e2 + 10;int n, m;int g[N][N];int f[N][N];//(-1 0)(0 1)(1 0)(0 -1)//上 右 下 左 //int dx[4] = {-1, 0, 1, 0}原创 2021-08-12 12:41:27 · 339 阅读 · 0 评论 -
7.树形DP(模板)
树形DP一.没有上司的舞会一.没有上司的舞会题目来源:没有上司的舞会#include <iostream>#include <cstring>using namespace std;const int N = 6010;int e[N] , ne[N] , h[N] , idx;int happy[N];int n;bool has_fa[N];int f[N][2];//邻接表储存树void add(int a , int b){ e[原创 2021-08-12 12:41:14 · 169 阅读 · 0 评论 -
6.状态压缩DP
状态压缩DP一.蒙德里安的梦想二.最短Hamilton路径一.蒙德里安的梦想题目来源:蒙德里安的梦想#include<bits/stdc++.h>using namespace std;const int N=12, M = 1<< N; long long f[N][M] ;// 第一维表示列, 第二维表示所有可能的状态bool st[M]; //存储每种状态是否有奇数个连续的0,如果奇数个0是无效状态,如果是偶数个零置为true。//vector<原创 2021-08-12 12:40:56 · 155 阅读 · 0 评论 -
5.数位统计DP(模板)
数位统计DP一.计数问题一.计数问题题目来源:计数问题#include <iostream>#include <vector>using namespace std;int base[10];int f[10][10];int g[10][10];void init(){ base[0] = 1; for(int i = 1 ; i <= 9 ; i++) base[i] = base[i-1]*10; //从00……0 -原创 2021-08-12 12:40:33 · 66 阅读 · 0 评论 -
4.计数类DP(模板)
计数类DP一. 整数划分一. 整数划分题目来源: 整数划分/*// f[i][j] = f[i - 1][j] + f[i][j - i]#include <iostream>using namespace std;const int N = 1e3 + 7, mod = 1e9 + 7;int f[N][N];int main() { int n; cin >> n; for (int i = 0; i <= n; i ++原创 2021-08-12 12:40:16 · 98 阅读 · 0 评论 -
3.区间DP(模板)
区间DP一. 石子合并一. 石子合并题目来源:石子合并//f[i][j]表示将i到j合并成一堆的方案的集合#include<bits/stdc++.h>using namespace std;const int N=310,INF=0x3f3f3f3f;int f[N][N];int s[N];int n;int main(){ cin>>n; memset(f,INF,sizeof(f)); //记得初始化 f原创 2021-08-12 12:39:57 · 54 阅读 · 0 评论 -
2.线性DP(模板)
线性DP一.数字三角形二.最长上升子序列 I三.最长上升子序列 II四.最长公共子序列五.最短编辑距离六.编辑距离一.数字三角形题目来源:数字三角形//倒序不用处理边界#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int INF = 2e9;const int N = 1010;int f[N][N];int n,a[N][N];int原创 2021-08-12 12:39:43 · 117 阅读 · 0 评论 -
1.背包问题(模板)
背包问题一.01背包问题二.完全背包问题三.多重背包问题 I四.多重背包问题 II五.分组背包问题一.01背包问题题目来源:01背包问题//一维AC#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;int v[MAXN]; // 体积int w[MAXN]; // 价值 int f[MAXN]; // f[i][j], j体积下前i个物品的最大价值 int main() {原创 2021-08-11 10:36:49 · 85 阅读 · 0 评论