是人都能看懂的树状数组介绍(看不懂举报我)-爱代码爱编程
树状数组是个好东东,我们一定要学会。
单点修改需,树状数组只需。
区间查询需,树状数组只需。
区间修改与查询,用它!用它!用它!!!
树状数组基本概念
树状数组的核心思想有关于二进制,不算特别难,而且代码贼短,适合作者这种小菜。
树状数组就是让需要改变的那个区间的第一个数加上改变的大小;让区间最后一个数的后一个数减去要改变的大小(类似差分)。第一个数加完后,使包含它的数也加上改变的大小;最后一个数的后一个数减完后,使包含它的数也减上改变的大小。
好,讲完这么多,你们肯定不理解,接下来我来解释(说了一堆废话)
树状数组单点修改
进入正题。
区间修改我们普通修改是不是需要,但是我们用树状数组只需要,是不是很优呢?
当我们修改第一个数的时候,让他增加一个数n(我们假定n为2)。但在个时候,有一些本来包含这个数的大数就不服了:“我们包含他,他咋还比我们大了呢?”,所以说这个时候,为了平复民情啊,我们还需要把包含这个数的大数也加上2,附上一张图:
看,比如说我们要更改的是的话,那包含他的数是不是有:。所以说我们需要让这些数也加上