首页 > 其他分享 >树状数组的板子

树状数组的板子

时间:2022-10-27 19:46:43浏览次数:56  
标签:树状 int tr 板子 数组 5e5

该数据结构可以维护序列的前缀和

 

1. 单点修改,求区间和

#include <iostream>
using namespace std;
 const int N=5e5+2;
 int n,tr[N];
 int lowbit(int x){
     return x&-x;
 }
 void add(int x,int v){
     for(;x<=n;x+=lowbit(x)) tr[x]+=v;
 }
 int q(int x){
     int t=0;
     for(;x;x-=lowbit(x)) t+=tr[x];
     return t;
 }
 signed main(){
     int i,op,x,y,m;
     scanf("%d%d",&n,&m);
     for(i=1;i<=n;i++) scanf("%d",&x),add(i,x);
     
     while(m--){
         scanf("%d%d%d",&op,&x,&y);
        if(op==1) add(x,y); else printf("%d\n",q(y)-q(x-1));
     }
 }

 

标签:树状,int,tr,板子,数组,5e5
From: https://www.cnblogs.com/towboa/p/16833487.html

相关文章

  • st表板子
    constintN=1e5+2;intst[N][20],n,a[N];voidinit(){inti,j;for(i=1;i<=n;i++)st[i][0]=a[i];for(j=1;j<20;j++)for(i=1;i+(1<<j)-1<......
  • 线段树的一些板子
    有2种方式,都是用的lazy标记,但具体用法不同 1)标记永久化 假设现在需要1.区间加值2.求区间和  #include<iostream>#include<algorithm>usingnamespacestd......
  • luogu 1908 逆序对板子
     逆序对的本质是二维偏序 给第一维排序(输入时已排好),统计y(k)>=y(i)k<i的个数用树状数组维护y值前缀和,需要的时候直接查询该题需要离散化这个y,再作为树状数组......
  • 48、数组、字符串处理
    数组处理数组介绍及声明变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间,相当于多个变量的集合数组名和索引:索引编号从0开始,属于数值索引索引可支持使用自定义......
  • Leetcode第1822题:数组元素积的符号(Sign of product of an array)
    解题思路一个数组所有元素的乘积为正返回1,为零返回0,为负返回-1.变量pos统计正元素的个数,变量neg统计负元素的个数,遍历数组。遍历过程中如果有元素为零,直接返回0;遍历结束......
  • 数组元素积的符号
    题目已知函数 signFunc(x)将会根据x的正负返回特定值:如果x是正数,返回1。如果x是负数,返回-1。如果x是等于0,返回0。给你一个整数数组nums。令product......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:最大子数组和
    题目:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例1:输入:nums=[-2,1,-3,4,-1,......
  • ACWing 3549 -- dp&&滚动数组
    题目描述最长非递减子序列思路Reference代码......
  • List数组使用stream根据时间进行排序实现
    乱序[Student{userName='张三',userNick='2',age=22,createTime='2022-12-022:11:00'},Student{userName='李四',userNick='1',age=23,createTime='2022-12-03......
  • 求两数组交集的两种算法
    //方法一:用哈希表的思路,将数组转换为对象varintersect1=function(nums1,nums2){  letobj={},arr=[];  for(leti=0;i<nums1.length;i++){......