首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

插头DP小结_dp插头接线标准

插头DP一般都是棋盘模型,找路径或者环路最值或者方案数。 插头:说白了就是两个联通的格子,一个走向另一个,那么这里就有一个插头。...轮廓线:DP逐格DP,那么轮廓线可以分开DP过的格子和未DP的格子。轮廓线的长度明显是m+1。插头垂直于轮廓线。 转移: 轮廓线在换行的时候要位移,这个画画图就出来了。...那么插头就有3种,一种是没插头,一种是插头从已DP的指向未DP的,一种是未DP的指向已DP的。 具体实现,有两种思路,一种是括号序列,一种是最小表示法。...写法有三种,一种是hash表存取状态,有decode,encode,就是kuangbin那种写法;一种是传统dp写法,位运算取出状态;还有种是claris写法,预处理所有可能状态然后传统DP转移。...因为括号序列的性质,轮廓线上m+1个点最多只有m/2个不同的联通块,根据这个压位DP。 如果左插头和上插头都有,那么右插头和下插头就没有了。

77630

树形DP

树形dp就是在树上进行的dp。由于树具有递归的性质,因此树形dp一半都是用递归的方式进行的。 问题的大意是,选了父节点,那么它的直接子节点就不能被选择,求总的权值的最大值。...题目:P1352 没有上司的舞会 这题是树形dp的板子题,每个节点都有被选择和不被选择两种情况。 用数组dp[n][0]记录第n个节点不被选择的情况,用数组dp[n][1]记录被选择的情况。...那么就有状态转移方程 dp[n][0] = Σ(max(dp[x][0],dp[x][1]),其中,x是n的所有子节点 dp[n][1] = a[n] + Σ(dp[x][0]) 然后总的权值和的最大值就是...max(dp[root][0],dp[root][1]) 下面给出代码实现: #include using namespace std; #define MAXN 6006...[u][0] += max(dp[e[i].v][0], dp[e[i].v][1]); dp[u][1] += dp[e[i].v][0]; } } bool is_root

1.1K30

【树形 DP】如何从方向角度理解树形 DP

Tag : 「树形 DP」、「DFS」、「动态规划」、「树」 给定一个无向、连通的树。 树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。...= b_{i} 给定的输入保证为有效的树 树形 DP 对于树形 DP,可以随便以某个节点为根,把整棵树“拎起来”进行分析,通常还会以“方向”作为切入点进行思考。...g[u] 的推导 对于树形 DP 题目,“往下”的计算往往是容易的,而“往上”的计算则是稍稍麻烦。...对于树形 DP ,通常需要对“往上”进一步拆分:「往上再往上」和「往上再往下」: 往上再往上:是指经过了 j -> u 后,还必然经过 u -> fa 这条边时,所能到达的节点距离之和: 这部分对

20440
领券