
树状数组
bifanwen
梦想是遥不可及而奇幻莫测的,它给我全部的力量,它把我叫醒。
展开
-
树状数组进阶
博客园同步 前置知识: 树状数组单点修改,区间修改。 差分。 下面我们考虑区间修改。 一开始我们维护的是部分前缀和,但是现在,区间修改显然不能用前缀和有关的做法。 单区间修改用差分就够了。但是这里有修改,考虑将 差分 和 树状数组 结合。 令 ccc 为 aaa 的差分,维护 aaa 的区间修改与区间和即可,这样 aaa 就是 ccc 的前缀和了。 那么区间修改只需要改 222 个点,单点询问只需要问前缀和。但是区间询问则怎么做? 显然,还是用前缀和相减,考虑前缀和。 那么考虑一个东西: ∑i=原创 2020-08-28 22:06:26 · 194 阅读 · 0 评论 -
LOJ #135. 二维树状数组 3:区间修改,区间查询 题解
博客园同步 原题链接 前置知识: 一维树状数组的区间修改与区间查询。 简要题意: 维护二维数组的矩阵加与矩阵查。 很显然,如果你用 二维线段树 的话,常数较大,加上要开 long long\text{long long}long long,很可能会 MLE + TLE\text{MLE + TLE}MLE + TLE 的双倍快乐。 所以我们要用 二维树状数组 解决这道题目。 考虑常规前缀和,二维的前缀和需要维护 444 个节点,我们也需要一一维护。原创 2020-06-27 21:29:38 · 825 阅读 · 0 评论 -
P3368 【模板】树状数组 2 题解
博客园同步 原题链接 前置知识: 树状数组的单点修改与区间询问。 简要题意:维护数组的区间修改与单点询问。 同样类似的,我们用 树状数组 进行操作,对每个区间修改,本质上 是对差分数组的前缀和的维护,而前缀和的维护我们需要用到 树状数组。 树状数组以常数小,空间小比线段树好用,好写(但是功能没有线段树多)。 所以对每个区间 [l,r][l,r][l,r] ,更新 lll 和 r+1r+1r+1 的差分值即可。 时间复杂度:O(nlogn)−O(logn)\mathcal{O}(n \log n) - \原创 2020-06-27 21:23:23 · 256 阅读 · 0 评论 -
P3374 【模板】树状数组 1 题解
博客园同步 原题链接 给定一个长度为 nnn 的数组,qqq 组操作: 将某一个数加上 xxx 求出某区间每一个数的和 显然,假设你现在什么也不会。 我们只考虑第 222 个操作,即先不考虑修改,如何处理区间和的询问? 显然,对于初始的数组 aia_iai,只需要做一个前缀和 sss 使得: sj=∑i=1jais_j = \sum_{i=1}^j a_isj=i=1∑jai 这样,对于一组询问: ∑i=lrai=sr−sl−1\sum_{i=l}^r a_i = s_r - s_{l-原创 2020-06-27 21:18:47 · 242 阅读 · 0 评论