树形DP
文章平均质量分 53
1
hesorchen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
abcE-Xor Distance思维、拆位
题目E - Xor Distances给出一颗带边权的树。求所有简单路径异或和。解题思路找任一结点x为根结点。记F(u,v)为u到v简单路径的异或值。对于两个结点u,v,设w为uv的最近公共祖先,有F(u,v)= F(u,w) ^ F(w,v)= F(u,w) ^ F(w,v) ^ F(x,w) ^ F(x,w)= F(u,x) ^ F(x,v)由于异或值每一位互不影响,因此可以拆位考虑。设DP[i][j][k]DP[i][j][k]DP[i][j][k]为子树中所有结点 到结点iii、原创 2021-10-12 09:21:35 · 310 阅读 · 1 评论 -
CF1153D神仙DP
题目D. Serval and Rooted Tree给出一颗有根树,在每个非叶子节点都有一个属性:maxmaxmax : 在所有儿子的权值中取最大值minminmin : 在所有儿子的权值中取最小值假设这颗树有k个叶子结点,现在你需要对这k个叶子结点赋值[1,k]且两两互不相同。问根结点的最大值可以是多少。求解很难用数值直接处理,我们使用排名进行树形dp,排名第1的权值即为k,最低排名的权值即为1。令dpudp_udpu表示以u为根的子树的所有叶节点中,结点u可以取得的最大值的排名,原创 2021-09-21 15:59:01 · 224 阅读 · 0 评论 -
HDU6567树的重心、换根DP
题目Cotree用一条边将两颗树连接起来,使得点对之间的距离和最小。求解找出两棵树的重心,连接重心,换根DP求一下每条边的贡献即可。#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 5;vector<int> vec[N];bool vis[N];int nd1, nd2;int N1, N2;int siz[N];void pre(int u, int fa){ vi原创 2021-08-18 16:45:18 · 248 阅读 · 0 评论
分享