您的位置:首页 > 其它

树状数组总结二

2011-12-08 00:50 274 查看


树状数组小结

分类:算法学习 | 作者:酷~行天下 | 发表于2011/07/10 1条评论 513
views

最近做了HDU几道树状数组的题,小小总结一下……

树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],那么查询a[1]+…+a
的时间是log级别的,而且是一个在线的数据结构,支持随时修改某个元素的值,复杂度也为log级别。

Cn = A(n – 2^k + 1) + … + An ;

此处的k为n的二进制形式末尾0的个数,可以利用Lowbit()函数找出k

注意:下标不能从0开始:

当i = 0,0 + Lowbit(0) = 0,会造成死循环!

主要三个函数:

+
expand source(双击可全选代码)

树状数组功能:

1、单点更新,区间求和(第一类)//HDU 1166 敌兵布阵

2、区间更新,单点求值(第二类)//HDU 1556 Color the ball

3 、逆序数的应用,可以求左边小于它的数,右边大于它的数,反过来可以求



题目:

HDU 1166 敌兵布阵 ,树状数组模板题,单点更新,区间求和

+
expand source(双击可全选代码)



HDU 1556 Color the ball 区间更新,单点求值

+
expand source(双击可全选代码)



HDU 1541 Stars 树状数组应用

+
expand source(双击可全选代码)



HDU 1892 See you~ 简单二维树状数组

+
expand source(双击可全选代码)



HDU 2642 Stars 二维树状数组

+
expand source(双击可全选代码)



HDU 3584 Cube 三维树状数组,只有0,1的区间更新,单点求值

+
expand source(双击可全选代码)



HDU 2689 Sort it 求逆序对

+
expand source(双击可全选代码)



HDU 2838 Cow Sorting 逆序数的应用

+
expand source(双击可全选代码)



HDU 1394 Minimum Inversion Number 逆序对应用

+
expand source(双击可全选代码)



HDU 2688 Rotate 求正序数,然后模拟

+
expand source(双击可全选代码)



HDU 2852 KiKi’s K-Number 求大于a的第k大元素,可以用二分枚举

+
expand source(双击可全选代码)



HDU 2227 Find the nondecreasing subsequences 利用树状数组求递增序列个数

+
expand source(双击可全选代码)



HDU 3450 Counting Sequence 类似2227

+
expand source(双击可全选代码)



HDU 2492 Ping Pong 求长度为3的顺序序列有多少个

+
expand source(双击可全选代码)


树状数组小结

分类:算法学习 | 作者:酷~行天下 | 发表于2011/07/10 1条评论 513
views

最近做了HDU几道树状数组的题,小小总结一下……

树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],那么查询a[1]+…+a
的时间是log级别的,而且是一个在线的数据结构,支持随时修改某个元素的值,复杂度也为log级别。

Cn = A(n – 2^k + 1) + … + An ;

此处的k为n的二进制形式末尾0的个数,可以利用Lowbit()函数找出k

注意:下标不能从0开始:

当i = 0,0 + Lowbit(0) = 0,会造成死循环!

主要三个函数:

+
expand source(双击可全选代码)

树状数组功能:

1、单点更新,区间求和(第一类)//HDU 1166 敌兵布阵

2、区间更新,单点求值(第二类)//HDU 1556 Color the ball

3 、逆序数的应用,可以求左边小于它的数,右边大于它的数,反过来可以求



题目:

HDU 1166 敌兵布阵 ,树状数组模板题,单点更新,区间求和

+
expand source(双击可全选代码)



HDU 1556 Color the ball 区间更新,单点求值

+
expand source(双击可全选代码)



HDU 1541 Stars 树状数组应用

+
expand source(双击可全选代码)



HDU 1892 See you~ 简单二维树状数组

+
expand source(双击可全选代码)



HDU 2642 Stars 二维树状数组

+
expand source(双击可全选代码)



HDU 3584 Cube 三维树状数组,只有0,1的区间更新,单点求值

+
expand source(双击可全选代码)



HDU 2689 Sort it 求逆序对

+
expand source(双击可全选代码)



HDU 2838 Cow Sorting 逆序数的应用

+
expand source(双击可全选代码)



HDU 1394 Minimum Inversion Number 逆序对应用

+
expand source(双击可全选代码)



HDU 2688 Rotate 求正序数,然后模拟

+
expand source(双击可全选代码)



HDU 2852 KiKi’s K-Number 求大于a的第k大元素,可以用二分枚举

+
expand source(双击可全选代码)



HDU 2227 Find the nondecreasing subsequences 利用树状数组求递增序列个数

+
expand source(双击可全选代码)



HDU 3450 Counting Sequence 类似2227

+
expand source(双击可全选代码)



HDU 2492 Ping Pong 求长度为3的顺序序列有多少个

+
expand source(双击可全选代码)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: