树上的差分

1. 点的差分

求路径 u - v 上的点被经过的次数。

cnt [ x ] 代表点 x 经过的次数。

核心代码:

cpp 复制代码
cnt[n]++;
cnt[v]++;
cnt[lca]--;
cnt[fa[lca]]--;

2. 边的差分

求 u - v 路径上每一条边经过的次数。

cnt [ x ]:代表 x 向上的边经过的次数。

核心代码:

cpp 复制代码
cnt[u]++;
cnt[v]++;
cnt[lca]-=2;
相关推荐
化学在逃硬闯CS9 分钟前
【Leetcode热题100】108.将有序数组转换为二叉搜索树
数据结构·c++·算法·leetcode
追随者永远是胜利者9 分钟前
(LeetCode-Hot100)5. 最长回文子串
java·算法·leetcode·职场和发展·go
tankeven13 分钟前
HJ86 求最大连续bit数
c++·算法
ValhallaCoder16 分钟前
hot100-回溯II
数据结构·python·算法·回溯
追随者永远是胜利者22 分钟前
(LeetCode-Hot100)19. 删除链表的倒数第 N 个结点
java·算法·leetcode·链表·go
就不掉头发32 分钟前
动态规划算法 --积小流以成江海
算法·动态规划
写代码的小球41 分钟前
C++ 标准库 <numbers>
开发语言·c++·算法
拳里剑气1 小时前
C++:哈希
开发语言·数据结构·c++·算法·哈希算法·学习方法
闻缺陷则喜何志丹1 小时前
【高等数学】导数与微分
c++·线性代数·算法·矩阵·概率论
智者知已应修善业1 小时前
【项目配置时间选择自己还是团体】2025-3-31
c语言·c++·经验分享·笔记·算法