zoukankan      html  css  js  c++  java
  • 树状数组的区间加以及区间询问讲解

    前置技能

      基础树状数组。不会的话自己百度Orz。

      要求掌握树状数组的以下操作:

    • 熟悉树状数组原理以及用途。
    • 单点修改,区间查询。
    • 区间加,单点查询。

    问题模型

      树状数组实现区间加和区间查询。

    实现

      记

      $A_i$为数列上面的第$i$个元素。

      $delta_i=A_i-A_{i-1}, (1leq ileq n)$。

      $exdel_i=delta_i imes i$

      拓展公式:

      $$A_i=sum_{j=1}^{i}delta_j$$

      推导区间加

      $Large Add(L,R,v)$

    $$delta_L+=v$$

    $$exdel_L+=v*L$$

    $$delta_{R+1}-=v$$

    $$exdel_{R+1}-=v*(R+1)$$

      (好像没什么用啊……看看后面的询问推导)

      推导区间询问

      $Large query(L,R)$

    $$ans=sum_{i=L}^{R}sum_{j=1}^{i}delta_j\=sum_{i=1}^{L}(R-L+1) imes delta_i+sum_{i=L+1}^{R}(R-L+1-(i-L)) imes delta_i\=sum_{i=1}^{L}(R-L+1) imes delta_i+sum_{i=L+1}^{R}(R+1-i) imes delta_i\=sum_{i=1}^{L}(R-L+1) imes delta_i+sum_{i=L+1}^{R}(R+1) imes delta_i-sum_{i=L+1}^{R}exdel_i\=sum_{i=1}^{R}(R+1) imes delta_i-sum_{i=1}^{L}L imes delta_i-sum_{i=L+1}^{R}exdel_i$$

       于是前缀和随便弄几下就好了。

    拓展

     
     
     
  • 相关阅读:
    网管的自我修养-网络系统
    网管的自我修养-电脑维护
    iOS继承与类别
    iOS支付宝集成
    HTTP HTTPS TCP/IP UDP
    AFNetworking新版本3.0的迁移
    GCD使用 并行串行队列同步异步执行组合情况
    使用vim遇到的问题
    mac取色
    网络解析
  • 原文地址:https://www.cnblogs.com/csushl/p/9941234.html
Copyright © 2011-2022 走看看