二维树状数组学习

http://blog.csdn.net/z309241990/article/details/9615259这个网站有实例,讲的不错以前很ZZ的以为二维树状数组就是树状数组存vector或者vector存树状数
做了那次网络赛之后知道有单点更新,矩阵查询的(LOGN)^2数据结构,其实就是树状数组里存了树状数组,比如x + lowbit(x) 总会存了x的信息。

记: B[1]={a11,a11+a12,a13,a11+a12+a13+a14,a15,a15+a16,...} 这是第一行的一维树状数组 

  B[2]={a21,a21+a22,a23,a21+a22+a23+a24,a25,a25+a26,...} 这是第二行的一维树状数组 

  B[3]={a31,a31+a32,a33,a31+a32+a33+a34,a35,a35+a36,...} 这是第三行的一维树状数组 

  B[4]={a41,a41+a42,a43,a41+a42+a43+a44,a45,a45+a46,...} 这是第四行的一维树状数组 那么:

C[1][1]=a11,C[1][2]=a11+a12,C[1][3]=a13,C[1][4]=a11+a12+a13+a14,c[1][5]=a15,C[1][6]=a15+a16,... 这是A[][]第一行的一维树状数组 

C[2][1]=a11+a21,C[2][2]=a11+a12+a21+a22,C[2][3]=a13+a23,C[2][4]=a11+a12+a13+a14+a21+a22+a23+a24, C[2][5]=a15+a25,C[2][6]=a15+a16+a25+a26,... 这是A[][]数组第一行与第二行相加后的树状数组 

C[3][1]=a31,C[3][2]=a31+a32,C[3][3]=a33,C[3][4]=a31+a32+a33+a34,C[3][5]=a35,C[3][6]=a35+a36,... 这是A[][]第三行的一维树状数组

C[4][1]=a11+a21+a31+a41,C[4][2]=a11+a12+a21+a22+a31+a32+a41+a42,C[4][3]=a13+a23+a33+a43,... 这是A[][]数组第一行+第二行+第三行+第四行后的树状数组

感觉大概还是可以理解的,比如你要改一个点的值,要改这一行的若干个点的值,同时还要改保存了这一行的若干行的值,所以可以再LOGN^2时间内单点修改,LOGN^2矩阵查询(当然要查区间也是可以的),那能不能和一维一样区间修改区间查询呢……唉原理还是理解不够深刻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值