树上差分
1
hesorchen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷P3258松鼠的新家-树上差分
题目链接比较裸的树上点差分,需要注意的是每次差分的终点作为上次的起点会重复计算,因此除了第一个点都需要减一。AC代码:struct node{ int v, next;} e[600010];int ct = 1;int head[300010];void add(int u, int v){ e[ct].v = v; e[ct].next = head[u]; head[u] = ct++;}int a[300010];int father[30原创 2020-09-25 10:27:43 · 3681 阅读 · 0 评论 -
树上差分之边差分
学会了点差分,边差分就很简单了。给定一棵树,给出若干次修改操作以及少次查询操作修改操作:给定两个点u,vu,vu,v,将u,vu,vu,v路径上所有的边权值+k+k+k查询操作:询问点xxx到其父亲结点的边权值思路:树上边差分,要修改u,vu,vu,v路径上的所有边权值,只需f[u]+=kf[u]+=kf[u]+=kf[v]+=kf[v]+=kf[v]+=kf[lca(u,v)]−=2∗kf[lca(u,v)]-=2*kf[lca(u,v)]−=2∗k点xxx到其父亲结点的边权值就是以xxx原创 2020-09-24 20:09:48 · 3916 阅读 · 0 评论 -
树上差分之点差分
给定一棵树,给出若干次修改操作以及一次查询操作修改操作:给定两个点u,vu,vu,v,将u,vu,vu,v路径上所有的点权值+k+k+k查询操作:询问点xxx的权值思路:树上差分,要修改u,vu,vu,v路径上的所有点,只需f[u]+=kf[u]+=kf[u]+=kf[v]+=kf[v]+=kf[v]+=kf[lca(u,v)]−=kf[lca(u,v)]-=kf[lca(u,v)]−=kf[father[lca(u,v)]]−=kf[father[lca(u,v)]]-=kf[father[原创 2020-09-23 17:28:05 · 3763 阅读 · 0 评论
分享