首页 > 其他 > 详细

树上差分总结

时间:2018-04-06 17:57:04      阅读:221      评论:0      收藏:0      [点我收藏+]

最近翻了一下自己的U盘,突然发现有一个树上差分的ppt,居然还没有学,因为以前以为这个很高大尚,以为很难.......(其实真的不难)

好吧,入正题

首先得知道差分这个东西吧!  简单差分 

在讲树上差分之前,首先需要知道树的以下两个性质:
(1)任意两个节点之间有且只有一条路径。
(2)一个节点只有一个父亲节点(即只有一条返祖边)

可以发现所有树上两点 a,b 的路径可拆为:a--->LCA(a,b),LCA(a,b)--->b(最好去学一下LCA的快速求法(这个我没写,随便上网找了一个感觉比较好的:倍增LCA详讲))

首先一个大前提(一个点的真实权值是一个点子树内所有差分后的权值之和)

自己画一棵树(不想画图了我),找两个点p,q,如果是要在他们的路径上都加一个x的话

你先自己推一下在哪里++,哪里--来维护吧.(注意:一个点的真实权值是一个点子树内所有差分后的权值之和)

 

 

 

 

 

 

好的,

是在p,q上分别++,在LCA(p,q)和fa[LCA(p,q)](LCA(p,q)的爸爸)上--.自己在去手玩一下吧,最后统计出来是对的!

这个其实真的不难把!

总结一下:

1.树上差分主要用于求解一些树上的路径问题

2.它通过利用树的一些性质,用一个差分数组来实现对一条路径的操作,这涉及到路径的 起 终点 与 LCA。

3.一般情况下:一个点的真实权值为其所在子树内所有点的差分数组的值的和

4.树上差分一般不适用于询问和操作嵌套的题目,这时一般用树链剖分解决

几道题:

1.luoguP3128 [USACO15DEC]最大流Max Flow  题解  板子题

2.luoguP3258 [JLOI2014]松鼠的新家        题解  板子题

3.luoguP2680 运输计划                    挖个坑

4.luoguP1600 天天爱跑步                  挖个坑

 

树上差分总结

原文:https://www.cnblogs.com/cjoierljl/p/8728215.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!