随笔分类 - DP--树形DP
摘要:题目链接:https://vjudge.net/problem/HDU-4276 题意:给出一棵树,起点为1,时间为V,终点为n,每个点有一个价值a[u],每条边有一个时间花费w,求在时间V内到达终点n可以获得的最大价值。 思路: 考虑边有两种情况,一种是属于1->n路径上的(只用走一次),一种是不
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-3534 题意:给出一棵树,求树上最长距离(直径),以及这样的距离的条数。 思路:如果只求直径,用两次dfs即可。但是现在要求最长距离的条数,用dp1[u]记录以u为根的子树中叶子结点到u的最长距离,dp2[u]表示最长距离的条
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-3107 题意:求树的可能的重心,升序输出。 思路:因为学树形dp之前学过点分治了,而点分治的前提是求树的重心,所以这题就简单水了一下。用sz[u]记录子树u的大小,son[u]记录以u为根时,子结点中最大的结点数。所以: so
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-3586 题意:一棵边权树,要删掉一些边使得每个叶子结点不能到达树根,且这些边的权值<=上限Max,且边权和小于m,求最小的上限ans,如果不满足则输出-1。 思路: 属于删边的树形dp。二分枚举上限Max,查找最小的满足要求的
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2486 题意:一棵点权树,起点在1,求最多经过m条边的最大点权和。 思路: 树形dp经典题。用3维状态,dp[u][j][0/1]表示在子树u中走j步的最大价值(回到u/不回到u)。显然dp[u][j][1]>=dp[u][j
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-4003 题意:给一棵边权树,在树根s有m个人,要通过m个人遍历到所有点,一个人经过一条边花费为边的权值,求最小花费(可以走已经走过的边)。 思路: 状态比较好想,用dp[u][j]表示在u结点的子树中有j个人的最小花费。但转移
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-1561 题意:给一个森林,每个结点有个权值,求选m个结点的最大权值和,并且选子结点前必须先选父结点。 思路: 把每颗树的树根连在0号结点上,那么就是一棵树了,最后求选m+1个结点的最大权值即可。状态很好想,用dp[u][j]表
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-1947 题意:给定一棵树,求得到一个结点数为p最少删多少条边。 思路: 明显的树形dp,分组背包。用dp[u][j]表示在结点u的子树上选j个结点最少要删除的边(一定包含结点u),那么dp[u][1]=num[u],num[u
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-1011 题意:给定一颗树,每个结点有两个属性,即花费V和价值w,并且选择子结点时必须选择父结点,求总花费不超过m的最大价值。 思路: 树上分组背包。和poj1155相似,对于结点u,先递归计算其子结点v的dp值,然后对于每个子
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-1155 题意:给定一颗以1为根的边权树,有n个结点,其中m个叶子结点,每个叶子结点有一个价值。要求从m个叶子结点中选最多的结点,费用是从根节点到叶子结点的边权和,价值是所有选中的叶子结点价值和。 思路: 树上分组背包。用dp[
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-3162 题意:给一棵树,求每个结点的树上最远距离,记为a[i],然后求最大区间[l,r]满足区间内的max(a[i])-min(a[i])<=M。 思路:第一步向hdoj2196那题一样树形dp求出每个结点的最长距离,我的另一
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-6446 题意:简化题意后就是求距离和的2*(n-1)!倍。 思路: 简单的树形dp,通过求每条边的贡献计算距离和,边(u,v)的贡献为sz[v]*(n-sz[v])。 另外因为前几天学点分治,看到这题想到可以用点分治求距离和。
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2152 题意:给定一颗大小为n的树,在每个结点建消防站花费为w[i],如果某结点没有消防站,只要在它距离<=d[i]的结点有消防站即可,求最小花费。 思路: 好难的树形dp,一点思绪也木有,只能搜题解。 用dp[u][i]表示
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-5909 题意:给一颗树,结点带权值v[i]<m。求异或和为k的子树个数(0<=k<m)。 思路: 首先点分治处理一颗树,跑一遍dfs得到该树的dfs序。然后我们用序列dp来做,用dp[i][j]表示必须包括重心,处理序列中第i
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-2196 题意:给出一棵树,求每个结点可以到达的最远距离。 思路: 如果求得是树上最长距离,两次bfs就行。但这里求的是所有点的最远距离,树形dp的经典题,想了一个小时,还是dp做得太少。分析可得对任意结点u,它的最长距离要么是
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-1520 题意:和luogu那道没有上司的舞会一样的题,给定一棵带点权的树,父结点和子结点不能同时选,问怎么选使得权值和最大,求最大值即可。 思路:最近开始肝树形dp,从入门题开始QAQ,加油! 用dp[u][0]表示结点u不选
        阅读全文
                
摘要:题目链接:https://nanti.jisuanke.com/t/39277 题意:给出一棵有边权的树,求所有简单路径包含异或和为0的简单路径的总数和。 思路: 首先,对于异或为0这一限制,我们通过dfs得到根节点到所有点的路径上的异或和val[i],如果两个结点的val值相等,说明他们之间的路径
        阅读全文
                
摘要:题目链接:https://ac.nowcoder.com/acm/contest/992/J 题意:题意很清晰,就是求任意两点距离的和,结果对1e9+7取模。 思路:裸的树形DP题,一条边的贡献值=这条边的权值×左端连接的顶点数×右端连接的顶点数,所以我们dfs算出点y的子树大小siz[y],x为y
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problemnew/show/P1352 题意:给定n个结点,每个结点有一个权值,给n-1条边,n个结点构成一棵树。并且规定一个结点的父结点如果存在,则该结点不能存在,若父结点不存在,则子结点可以存在也可以不存在。求存在的结点权值和最大是多少。
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problemnew/show/P2015 题意:给定一颗结点个数为n的树,有n-1条边,每条边有个权值,树根为1。现在给出q <=n,问剪枝后保留q条边后的边的权值最大是多少。 思路:首先要知道这道题有个隐含条件,如果某条边被保留,那么从根节点
        阅读全文
                
 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号