首页 > 其他分享 >树状数组

树状数组

时间:2023-02-01 11:24:42浏览次数:58  
标签:24 25 res 树状 int lowbit 数组 ans

1.lowbit x & (-x)

2.C[x] [x - lowbit(x) + 1 , x]的区间和

   用处:l->r的和 

   eg.25(10)   = 11001(2)

       ① ans += C[25]

       ② 25 -= lowbit(25)

       ③ ans += C[24]

       ④ 24 -= lowbit(24)

       ⑤ ans += C[16]

       ⑥ 16 -= lowbit(16) = 0;

C[]修改

        对于所有y 若x∈[y - lowbit(y) + 1,y] 则C[y] += v;

        [y - lowbit(y) + 1,y]:影响范围

int ask(int x){
    int res = 0;
    while(x) res += c[x], x -= lowbit(x);
    return res;
}
void add(int x,int v){
    while(x <= n){
        c[x] += v;
        x += lowbit(x);
    }
}

 

标签:24,25,res,树状,int,lowbit,数组,ans
From: https://www.cnblogs.com/CatalinaQ/p/17081965.html

相关文章

  • 优雅地在Chisel-BlackBox中添加二维数组端口
    论坛地址:https://ysyx.oscc.cc/forum/topic/229/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%9C%A8chisel-blackbox%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84......
  • 数组对象的一些快捷用法
    1、数组对象去重this.polluteNumOptions=[            {              remark:'aa',       ......
  • 多种数组排序方法
    1.随机生成数据vara=(function(){vara=[];functionrandomInt(from,to){returnparseInt(Math.random()*(to-from+1)+from);}for......
  • 对象数组去重。
    newSet()去重不能对对象使用,如下。对象并没有重复的概念。即使是用了,也去不了重,像该例子中的{name:1}。那要怎么去重呢,使用深拷贝循环去重?在网上查了下,直接使用......
  • 数组构造+逆元
    牛客2023寒假训赛3B请确保在尝试本题时了解数论中同余等式的相关内容。如不了解同余以及同余等式的相关性质,可以到oiwiki进行学习了解后再尝试本题。oiwiki同余(性质)......
  • 数组越界判定,这样更优雅
    目录背景优雅的解决方法验证越界使用验证常规使用结论背景在使用数组(swift)的编码过程中,不让程序崩溃是基本的要求,特别是在团队合作中时。如果直接下面代码,会出现什么......
  • spring boot——json解析示例——fastjson——使用fastJson将json与对象、集合、数组
                 ......
  • P59 稀疏数组
    需求:编写五子棋游戏中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。解决:稀疏数组。压缩稀疏数组介绍当一......
  • Educational Codeforces Round 126 (Rated for Div. 2) D. Progressions Covering(贪心
    题目https://codeforces.com/problemset/problem/1661/D题意给一个长度为n的数组a,和一个正数k,每次在数组a中选取连续的k个元素每个元素减去1,2,3……k问至少要......
  • 力扣4. 寻找两个正序数组的中位数
    给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。 示例......