树链剖分
文章平均质量分 95
# 树链剖分
黑夜和白天
过去无可挽回,未来可以改变
展开
-
树链剖分 or 根号分治 + dfs序 + 树状数组 ---- CF1254 D. Tree Queries
题目链接 题目大意: 问题转化: 很容易发现:假设修改的节点是vvv. vvv的子树sonvson_vsonv直接加上(n−size[sonv])n×d\frac{(n-size[son_v])}{n}\times dn(n−size[sonv])×d 不是vvv的子树直接加上size[v]n\frac{size[v]}{n}nsize[v] 解法1:根号分治 我一开始想的是dfs序用差分进行单点修改区间求和,毕竟是整颗子树的加,但是有个问题是它可能是菊花图,你每次都给子树进行区间修改的时候原创 2021-09-16 23:28:38 · 192 阅读 · 0 评论 -
树链剖分 ---- 2021杭电多校 1002 I love tree[详解]
题目链接 题目大意: 就是给你一颗树 树上每个点的初始权值为000 现在有两个操作 <1,a,b><1,a,b><1,a,b>对于aaa到bbb路径上所有点加上到aaa的距离的平方和 <2,a><2,a><2,a>询问aaa点的权值 解题思路: 对于树链上的修改问题我们很容易想到树链剖分 但是怎么对于每个点距离aaa的距离不一样那么累加的权值也不一样怎么办? 首先我们知道对于树链剖分上面的线段树是用时间戳dfn时间戳dfn时间原创 2021-07-29 10:34:09 · 192 阅读 · 0 评论 -
2020牛客多校第7场C-A National Pandemic[树链剖分+思维]
题目大意 1.首先我们看一下操作1:实际上可以说成在所有位置上加上w−dist(x,y)w-dist(x,y)w−dist(x,y),因为dist(x,x)=0dist(x,x)=0dist(x,x)=0 2.我们知道dist(x,y)=dep[x]+dep[y]−2∗dep[lca(x,y)]dist(x,y)=dep[x]+dep[y]-2*dep[lca(x,y)]dist(x,y)=dep[x]+dep[y]−2∗dep[lca(x,y)] 3.代入化简w−dep[x]−dep[y]+2∗de原创 2020-08-02 20:29:18 · 220 阅读 · 0 评论