• 树状数组


    题目描述 Description

    一行N个方格,开始每个格子里都有一个整数。现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和;修改的规则是指定某一个格子x,加上或者减去一个特定的值A。现在要求你能对每个提问作出正确的回答。1N<100000,提问和修改的总数m<10000条。

    输入描述 Input Description

    输入文件第一行为个整数N,接下来是nn个整数,表示格子中原来的整数。接下一个正整数m,再接下来有m行,表示m个询问,第一个整数表示询问代号,询问代号1表示增加,后面的两个数xA表示给位置X上的数值增加A,询问代号2表示区间求和,后面两个整数表示ab,表示要求[a,b]之间的区间和。

    树状数组练习一下

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n,m,b,c,p,x;
    int a[200010],tree[600010];
    int lowbit(int x){return x&(-x);}
    void add(int x,int p)
    {
        while(p<=n)
        {
            tree[p]+=x;
            p+=lowbit(p);
        }
    }
    int query(int x)
    {
        int sum=0;
        while(x>0)
        {
            sum+=tree[x];
            x-=lowbit(x);
        }
        return sum;
    }
    int main()
    {
        cin>>n;
        int cnt=0;
        for(int i=1;i<=n;i++){scanf("%d",&a[i]);add(a[i],++cnt);}
        cin>>m;
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&c);
            if(c==1)
            {
                scanf("%d%d",&p,&x);
                add(x,p);
            }
            else
            {
                scanf("%d%d",&p,&x);
                printf("%d
    ",query(x)-query(p-1));
            }
        }
        return 0;
    } 
  • 相关阅读:
    Action/Service/DAO简介 一
    Python中的Nonetype类型怎么判断?
    idea 中使用maven命令
    python-字符串中含有变量的表示方法
    python-configparser模块,读取配置文件
    python json 和 dict
    python interpreter解释器设置
    python写入数据到excel-xlwt模块(不能修改,每次写入全覆盖)
    pymongo问题集合
    excel表操作使用记录
  • 原文地址:https://www.cnblogs.com/19992147orz/p/5988642.html
Copyright © 2020-2023  润新知