利用树状数组决几类问题.docVIP

  • 7
  • 0
  • 约1.08万字
  • 约 10页
  • 2018-09-16 发布于江苏
  • 举报
利用树状数组决几类问题

利用树状数组解决几类问题 浙江省温岭中学 林希 树状数组作为一种实现简单、应用较广的高级数据结构,在OI界的地位越来越重要,下面我来简单介绍一下树状数组和它的简单应用。 一、树状数组简介 树状数组(Binary Indexed Trees,简称BIT)是一种特殊的数据结构,这种数据结构的时空复杂度和线段树相似,但是它的系数要小得多。它可以方便地查询出一段区间中的数字之和。其查询和修改的时间复杂度均为O(lbN),并且是一个在线的数据结构,可以随时修改并查询。我接下来用一道题目来介绍树状数组的几个基本操作。 【引例】 假设有一列数{Ai}(1=i=n),支持如下两种操作: 将Ak的值加D。(k,D是输入的数) 输出(s,t都是输入的数,s=t) 这道题目用线段树很容易可以解决,我就不多说了,那么如何用树状数组来解决呢?我们新增一个数组C[],其中C[i]=a[i-2k+1]+……+a[i](k为i在二进制形式下末尾0的个数)。根据定义我们可以得出一下这张表格: i 二进制 K 1 (1)2 0 c[1]=a[1] 2 (10) 2 1 c[2]=a[1]+a[2]=c[1]+a[2] 3 (11) 2 0 c[3]=a[3] 4 (100) 2 2 c[4]=a[1]+a[2]+a[3]+a[4]=c[2]+c[3]+a[4] 5 (101) 2 0 c[5]=a[5]

文档评论(0)

1亿VIP精品文档

相关文档