既然我们知道树状数组可以差分求前缀和 那么就可以对其进行 前缀和 求变量值 展开可得 (k+1)∗∑nic[i]−∑nii∗c[i](k+1)∗∑inc[i]−∑ini∗c[i] 两个 树状数组可以搞定 顺便提一下DFS序 可以将树上问题转化为区间问题 对节点重新编号 并且有从属关系 从而 利用各种数据结构 例如 树剖 树...
前缀和:arr = [1,2,3,4,5] preSum = [0,1,3,6,10,15] 差分数组:将某个区间的全部元素以O(1)的时间复杂度加上一个数或者减去一个数,当频繁的对一个数组进行这种操作时有用 要将i->j区间的元素全部加3:先求出差分数组,第i个位置+3,第j+1个位置-3,相当于 i 以后的每个元素都+3,j+1以后...
10.二维前缀和:直接暴力做前缀和,再暴力枚举右下节点即可,注意常数。 11.差分数组把一个区间的操作转化为左,右俩个端点上的操作,再通过前缀和得到原问题的解 例:建立一个数组C,初始化全为0,将下标a+1到b-1的位置全部-1。用一个数组d,d[a+1]-1,d[b]+1(“身高减小1的影响从a+1开始到b结束”)时间...