K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
现有一棵以1为根的无向树,我们需要对u和v之间简单路径上的所有点的权值统一加k。约定diff为点差分数组,lca(u,v)表示u和v的最近公共祖先,fa[x]表示节点x的父节点,根节点1的父节点视为不存在(fa[1]=0,diff[0]的修改不影响最终统计结果)。
diff[u] += k,diff[v] += k,diff[lca(u, v)] -= k,diff[fa[lca(u, v)]] -= k
diff[u] += k
diff[v] += k
diff[lca(u, v)] -= k
diff[fa[lca(u, v)]] -= k
diff[u] += k,diff[v] += k,diff[lca(u, v)] -= 2*k
diff[lca(u, v)] -= 2*k
diff[u] += k,diff[v] += k,diff[fa[lca(u, v)]] -= 2*k
diff[fa[lca(u, v)]] -= 2*k
diff[u] += k,diff[v] -= k,diff[lca(u, v)] += k,diff[fa[lca(u, v)]] -= k
diff[v] -= k
diff[lca(u, v)] += k