1.给你一些路径,找出被所有路径都覆盖的边(BZOJ4326)
思路: 将所有路径的起点、终点权值加1,起点终点的lca权值减2,dfs序累加。
最终权值为路径数的点到其父亲的边为所求边。
2.给你一些路径,每条路径(u,v)上的每个点权值增加1,求各个点的权值(BZOJ3631)
(给你一些路径,求树上每个结点被路径覆盖的次数)
思路:将所有路径的起点、终点权值加1,起点终点的lca权值减1,lca的父亲权值减1,dfs序累加。
本文介绍如何通过树形动态规划解决两类路径覆盖问题:一是寻找被所有路径共同覆盖的边;二是计算树上每个节点被路径覆盖的次数。采用特定的节点权重更新策略并结合DFS序遍历实现高效求解。
1.给你一些路径,找出被所有路径都覆盖的边(BZOJ4326)
思路: 将所有路径的起点、终点权值加1,起点终点的lca权值减2,dfs序累加。
最终权值为路径数的点到其父亲的边为所求边。
2.给你一些路径,每条路径(u,v)上的每个点权值增加1,求各个点的权值(BZOJ3631)
(给你一些路径,求树上每个结点被路径覆盖的次数)
思路:将所有路径的起点、终点权值加1,起点终点的lca权值减1,lca的父亲权值减1,dfs序累加。
466

被折叠的 条评论
为什么被折叠?