dp类型
dp类型
林中的亮光
沉着冷静淡定
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
目前做过的最长的线性dp-- I--区域
启发了对状态转移的设置#include<bits/stdc++.h>using namespace std;int n,m,k;int w[16][16];int f[16][16 * 16][16][16][2][2];struct state{ int i; int j;int l;int r;int x;int y;}g[16][16 * 16][16][16][2][2];int main(){ cin >> n .原创 2022-03-24 15:41:18 · 760 阅读 · 0 评论 -
树形dp补题
1.变异蛮牛很显然要求的就是以一为起点到以一为终点的个数,对于一个节点分析,我们可以发现它的贡献可以分为:1.若该节点为黑的时候,可以与子节点为黑的节点相连,并且子节点之间也可以相连2.若该节点为白的时候,并且子节点之间也可以相连利用递归的思想,先处理每个节点中的黑点个数,再分类计数即可。(复杂度O(n))#include<bits/stdc++.h>using namespace std;int t;int n;const int N = 2e5 + 10,.原创 2022-02-28 14:10:06 · 161 阅读 · 0 评论 -
Accumulation Degree --- 换根dp
个人感觉,换根dp的实质就是在不确定答案是以哪个节点为根时,先假设1个节点为根去遍历,更新答案,接着利用数学公式推出该假设根的子儿子为根的时候对应的值。#include<iostream>#include<cstring>#include<vector>using namespace std;int n;const int N=400000+10;long long e[N],ne[N],idx,h[N],edge[N];bool vis[N];.原创 2022-02-28 13:13:56 · 206 阅读 · 0 评论 -
数位dp(计数问题,超短模板)
# include <iostream># include <cmath>#include <vector>using namespace std;int kNumbers(int n,int k){ if(!n) return 0; int res = 0; vector<int >ans; while(n){ans.push_back(n%10),n/=10;} f...原创 2021-12-12 14:58:52 · 297 阅读 · 0 评论 -
树形dp(一)
例题;没有上司的舞会状态表示:f[i][j],一维表示当前这个节点,二维表示当前这个节点是选还是不选,根据选与不选可以写出不同情况的状态转移方程。#include<iostream>#include<cstring>using namespace std;const int N=6010;int e[N],ne[N],idx,h[N],f[N][N];bool vis[N];bool has_father[N];int n;int happy[N];vo.原创 2021-11-29 13:32:52 · 225 阅读 · 0 评论 -
最长递增子序对
常见模板#include<string>#include<iostream>#include<math.h>#include<cstring>#include<algorithm>using namespace std;const int maxn=1e5+5;int a[maxn],len[maxn],dp[maxn],res[maxn];int cnt;int n;//dp[i]记录当前字符串结尾的最长非递减(本题为递原创 2021-11-09 21:28:48 · 110 阅读 · 0 评论
分享