1264. 动态求连续区间和(树状数组---某个位置加上一个数/求在线(动态)前缀和/蓝桥杯)

题目:

输入样例:
10 5
1 2 3 4 5 6 7 8 9 10
1 1 5
0 1 3
0 4 8
1 7 5
0 4 8
输出样例:
11
30
35

 树状数组:

代码:

#include<cstdio>
#include<iostream>
using namespace std;

const int N=100010;
int n,m;
int a[N],tr[N];

//2^k
int lowbit(int x)
{
    return x&-x;
}

//改变数组在位置x上的值(加上某个值)
void add(int x,int v)
{
    for(int i=x;i<=n;i+=lowbit(i))tr[i]+=v;
}

//求动态(在线)前缀和
int query(int x)
{
    int res=0;
    for(int i=x;i>0;i-=lowbit(i))res+=tr[i];
    return res;
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)add(i,a[i]);//求得tr[i]
    
    while(m--){
        int k,a,b;
        scanf("%d%d%d",&k,&a,&b);
        if(k==1)add(a,b);
        else
        printf("%d\n",query(b)-query(a-1));//在线区间和
    }
    return 0;
}

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 04:42:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 04:42:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 04:42:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 04:42:01       20 阅读

热门阅读

  1. 用户行为分析-小数据集

    2023-12-19 04:42:01       48 阅读
  2. vue3组件注册

    2023-12-19 04:42:01       41 阅读
  3. MySQL_11.InnoDB Buffer Pool原理与配置

    2023-12-19 04:42:01       30 阅读
  4. FFmpeg 安装配置

    2023-12-19 04:42:01       29 阅读
  5. 解释区块链技术的应用场景和优势

    2023-12-19 04:42:01       42 阅读
  6. Cmake找不到mysql.h和libmysqlclient.so

    2023-12-19 04:42:01       43 阅读
  7. 如何在Linux命令行下发送和接收UDP数据包

    2023-12-19 04:42:01       42 阅读
  8. PostgreSQL 获取指定根节点及其所有子集的id

    2023-12-19 04:42:01       38 阅读
  9. Vue系列之指令 v-html

    2023-12-19 04:42:01       36 阅读
  10. Electron中Tray的setContextMenu导致窗口无法聚焦

    2023-12-19 04:42:01       35 阅读