题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移方程为: dp[i]=max(dp[i],dp[j]+1); 如果a[j]<a[i],那么dp[i] ...
分类:
其他好文 时间:
2020-02-02 20:09:27
阅读次数:
86
1.一个图论套路,结合之前的小知识(枚举子集) 例:Online judge 1268,Online judge 1396 询问一个图连通的方案数时,可令Dp一维为图是否连通,另一维是图的二进制表示(完全图可简化为点的个数),从而$Dp[x][0]$可通过$Dp[y][1]$来转移$y\subset ...
分类:
其他好文 时间:
2020-02-02 19:55:48
阅读次数:
90
Halloween Costumes 基础区间dp AC_Code 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 110; 5 int dp[maxn][max ...
分类:
其他好文 时间:
2020-02-02 19:33:08
阅读次数:
62
问题描述: 解法: 我们让 dp[i] 代表 背包体积恰好为 i 时背包的最大价值 ,再定义一个 g[i] 代表体积为 i 的时候总价值最大的最优选法方案数 这里注意 dp 的含义与之前的 01背包有点不同,所以我们初始化的时候也需要注意 (具体的可以看之前 01背包详讲) 统计方案数的时候得看它是 ...
分类:
其他好文 时间:
2020-02-02 17:44:44
阅读次数:
62
问题描述: 解法: 因为求具体的方案,我们就不能采取之前滚动数组优化版本的 01背包 ,因为这样会损失一些具体方案 因为要求字典序最小,那么我们肯定采取贪心策略(能选序号小的就选序号小的) 我们如果从前往后遍历所有的物品,那么最后 dp[n][m] 就是最后答案,那我们就得从后往前遍历才可以求的具体 ...
分类:
其他好文 时间:
2020-02-02 17:39:42
阅读次数:
102
问题描述: 解法: 这种树形的结构我们首先很容易去想到 树形dp ,但是和 树形dp 不一样的地方在于它选一个节点的话还有附加条件(也就是依赖关系) 我们对于每一个节点可以把它看成一个分组背包 dp[i][j] 代表 选第 i 个节点 背包容量为 j 的时候 背包的最大价值 我们可以先采取 树形dp ...
分类:
其他好文 时间:
2020-02-02 17:21:12
阅读次数:
93
Description: 给出两个整数 n 和 d ,求出有 n 个节点并且两个节点间最长距离为d的标号树的个数。 标号树即是树上每个结点都标有一个不同的编号。 $n define fo(i, x, y) for(int i = x, _b = y; i = _b; i ) define ll lo ...
分类:
其他好文 时间:
2020-02-02 15:32:49
阅读次数:
68
树的直径 [TOC] 定义:树的直径为树中最远的两个节点的距离之和。在求树的直径时一般有两种方法:树形dp或则两个BFS(DFS也可以)。 1.树形dp求解树的直径 思路:由树的直径定义可知:其树形dp的状态转移方程为: $$ D[x]=max(D[y_i]+Edge(x_i,y_i)) $$ 其中 ...
分类:
其他好文 时间:
2020-02-02 15:30:26
阅读次数:
75
"Link" 我们考虑dp,设$f_{i,j}$表示进行$i$次操作后Mincut为$j$的方案数。 转移与背包类似,考虑枚举成对的$f$进行转移,对于$f_{i,j}$,我们枚举$f_{a,b},f_{c,d}$,使得$f_{i,j}$的$s$与$f_{a,b}$的$s$重合,$f_{a,b}$的 ...
分类:
其他好文 时间:
2020-02-02 15:27:45
阅读次数:
65
2月4号前 "$P4281$" 方法:$3$次$LCA$ 2月5日前 "$P3478$" 方法:换根$dp$ ...
分类:
其他好文 时间:
2020-02-02 15:25:11
阅读次数:
43