树状数组及其应用.docxVIP

  • 4
  • 0
  • 约1.14万字
  • 约 21页
  • 2021-11-22 发布于辽宁
  • 举报
树状数组及其应用 (Binary In dexed Trees ) 一、什么是树状数组 【引例】 假设有一列数{A i} (1=i=n ),支持如下两种操作: 将Ak的值加D o( k,D是输入的数) 输出As+A s+i +…+A t (s, t都是输入的数,s=t ) 分析一:线段树 建立一颗线段树(线段长度 1?n ) 0 —幵始所有结点的 count值等于0。 对于操作1,如果把Ak的值加D,则把所有覆盖了 Ak的线段的count值加D。只有log 2n条线段会受到影响,因此时 间复杂度是 0( log 2n ) o 每条线段[x..y]的count值实际上就是 Ax+Ax+i +…+A y的值。 对于操作2 ,实际上就是把[s..t]这条线段分解成为线段树中的结点线段, 然后把所有的结 点线段的count值相加。该操作(ADD操作)在上一讲线段树中已介绍。时间复杂度为 0 (log 2n) o 分析二:树状数组 增加数组C 增加数组C,其中C[i]=a[i-2 Ak+1]+ i K 1 ⑴2 0 1_2 人 0+1=1 …1 c[1]=a[1] 2 (10) 2 1 2-2A1 +1=1 …2 c[2]=a[1]+a[2]=c[1]+a[2] 3 (11) 2 0 3-2A0+ 仁 3 …3 c[3]=a[3] 4 (100) 2 2 4-2A2+ 仁 1 ?.. 4

文档评论(0)

1亿VIP精品文档

相关文档