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

树状数组

时间:2023-02-14 20:23:45浏览次数:40  
标签:return 树状 int lowbit void tr 数组 res

能解决什么问题

动态求连续区间和

时间复杂度

O(log n)

代码

int tr[N];

int lowbit(int x)
{
    return x & -x;
}

void add(int x, int v)
{
    for (int i = x; i < N; i += lowbit(i)) tr[i] += v;
}

void query(int x)
{
    int res = 0;
    for (int i = x; i > 0; i -= lowbit(i)) res += tr[i];
    return res;
}

标签:return,树状,int,lowbit,void,tr,数组,res
From: https://www.cnblogs.com/cong0221/p/17120775.html

相关文章

  • Linux系统Shell脚本:shell数组、正则表达式及文件三剑客之AWK
    一、shell数组1、数组分类①关联数组:必须声明才可以使用,命令:delare-A数组名②普通数组:利用数字下标节约变量,可以不声明也可以声明,命令:delare-a数组名delare-a命令也......
  • 多维数组(套娃)
    packagearray;publicclassduodszu{publicstaticvoidmain(String[]args){int[][]array={{2,3},{4,5}};//套娃for(inti=......
  • 【NumPy基础】- Numpy数组和矢量计算
    ......
  • 查找数组中指定的元素
    indexOfconstarr=[1,2,3,4,5,1]console.log(arr.indexOf(1))//0`indexOf只能查找数组中简单数据类型且返回对应元素的索引,如果没有则返回-1,如果存在多......
  • php 分割汉字或字母为数组(简记)
    代码很简单,一个方法即可。绝对不坑~......
  • Java 数组中紧跟 key 之后出现最频繁的数字
    数组中紧跟key之后出现最频繁的数字说明给你一个下标从0开始的整数数组nums,同时给你一个整数key,它在nums出现过。​统计在nums数组中紧跟着key后面出现的......
  • 3618、存在连续三个奇数的数组
    给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false。示例1:输入:arr=[2,6,4,1]输出:false解释:不存在连续三个元......
  • 3623、合并两个有序数组
    给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非......
  • 3597、找到所有数组中消失的数字
    给你一个含n个整数的数组nums,其中nums[i]在区间[1,n]内。请你找出所有在[1,n]范围内但没有出现在nums中的数字,并以数组的形式返回结果。示例1:输入:nums=[4......
  • 3606、数组的度
    给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与nums拥有相同大小的度的最短连续子数组,返......