8.26树状数组讲解

来源:互联网 发布:linux vi编辑器的使用 编辑:程序博客网 时间:2024/04/23 23:14

今天又看了一遍博客,温故知新,说说新的理解,树状数组的题型主要有,单点更新,区间查询;区间更新,单点查询;区间更新,区间查询;求逆序数(边插边)求和的思路得掌握好,

当是sum(0-sum()时,先写add再写sum()-sum()和先写sum()-sum()再写add()是一样的,抵因为抵消了

由逆序数思路和ping pang思路学会思想

  for(i=1;i<;i++)

    {

         add(i,1);                                                                          add(i,v)                                                                 等等主要是理解

        sum(i);表示i左边比小与等于i的数的的个数                          sum(i) 表示i左边小与等于i的数的和   为什么想一想sum它是res+=c[x],x-=lowbit[i];

   }

  for(i=1;i<;i++)

     {

              sum(i);

              add(i,1); 表示i左边比x小的数的个数

          }

       for(i=n;i>=1;i--)

       {

             add(i,1)

               sum(i)   表示i的右边 小于等于i的数的个数

       }

      for(i=n;i>=1;i--)

      {

           sum(i)

          add(i,1);  表示i右边小于i的数的个数

      }

原创粉丝点击