树状数组的简单应用(夏夜砍树)

所谓的树状数组其实是线段树的一种特殊情况。只有题目具有加减性质才能用树状数组。如果要在区间内最大最小值的就不能用了。所以能用树状数组解得一定可以用线段树,可以用线段树的不一定可以用树状数组。

然而树状数组具有的有点也是很明显的。虽然他和线段树修改和求和的复杂度都是logN。但是树状数组的常数更小,需要的空间也更少。而且最重要的是他就像并查集一样优美,一样的容易编写。

 

百度文库上有介绍数组数组的ppt:http://wenku.baidu.com/view/0f08c5db6f1aff00bed51e1f.html

 

研究完上面的ppt也应该基本明白了。

lowbit函数其实就是n二进制位末尾第一位为1加上后面0所成的数。

 

例如:  lowbit( 110 ) = 10  ...  lowbit( 11 )  = 1  ...  lowbit( 1000 ) = 1000

 

而他所表示的意义就是n所表示的区间长度。

 

tyvj上的p1324。

 

题目大意就是给一个数列。每次询问[a,b]的和,且会把A[(a+b)/2]置0。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值