树上差分的两种基本操作
来源:互联网 发布:linux卸载软件包 编辑:程序博客网 时间:2024/06/10 05:56
树上差分的两种基本操作
树上差分的两种基本操作均用到了LCA,若对LCA不了解可以参考一下博主的另一篇博文
已知路径求被所有路径覆盖的边
- 首先对已知的这 n 条路径的 起点a 和 终点b 的权值 +1 ,并对 lca(a, b) 的权值 -2 。
- 从根节点开始深搜,回溯时将其本身的权值加上所有子节点的权值。
- 那么满足要求的边就是 权值等于n的节点 与其 父节点 所连的边
dfs代码(使用前向星存图):
void dfs(int x, int father) { // x 为深搜的节点, father 为 x 节点的父节点 int to; for (int i = head[x]; i; i = edges[i].next) { to = edges[i].to; // 枚举由 x 节点能够到达的所有的节点 if (to != father) { // 筛掉 x 节点的父节点 dfs(to, x); // 深搜 to 节点, 并设置其父节点为x value[x] += value[to]; // 累加权值和 } }}
已知路径求树上所有节点被路径覆盖次数
- 对每条路径的 起点a和终点b 的权值 +1 , 对 lca(a, b) 的权值 -1 , 对 lca(a, b)的父节点 权值 -1
- 从根节点开始深搜,回溯时将其本身的权值加上所有子节点的权值
- 每个节点的权值既是其被路径覆盖的次数
阅读全文
0 0
- 树上差分的两种基本操作
- 树上差分的两种基本操作
- 【瞎扯】树上差分的基本思路
- 【结论】【树上差分】
- 树上差分
- 【树上差分】【小结】
- 树上差分
- 树上差分
- 树上差分
- 树上差分瞎搞
- 树上差分
- 树上差分详解
- 树上差分
- 洛谷 3128 树上差分
- code forces739B 树上差分
- LuoguP2680/UOJ150[NOIP2015] 运输计划 解题报告【二分答案+树上操作(LCA)+树上差分】
- [BZOJ3631]JLOI2014松鼠的新家|树上差分
- bzoj3631 松鼠的新家[LCA][树上差分]
- web.xml 配置
- Spring+Mybatis整合报错Mapped Statements collection does not contain value原因之一
- 程序构建原理
- Ubuntu下MySQL的安装及远程连接配置等配置
- priority_queue优先级队列
- 树上差分的两种基本操作
- 基于R的数据挖掘方法与实践(2)——关联规则
- [Python]常用技巧之CSV处理
- 关于多指针指向同一块内存的问题!
- FTP默认模式搭建
- mysql5.7 索引
- 动态规划迷思
- monkey的使用及与leakcanary结合测试内存泄漏并禁止点击状态栏音量键返回键
- Genymotion下载慢或者下载失败的解决办法