码迷,mamicode.com
首页 > 编程语言 > 详细

树状数组模板(持续更新)

时间:2019-08-30 23:31:19      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:get   using   math   details   数组   summary   https   lin   html   

树状数组题目(持续更新)

\(1.\) 树状数组 \(1\) :单点修改,区间查询

\(2.\) 树状数组 \(2\) :区间修改,单点查询

\(3.\) 树状数组 \(3\) :区间修改,区间查询

树状数组单点修改,区间查询和

$View$ $Code$

//省略头文件
using namespace std;
inline int read()
{
    int ret=0,f=1;
    char ch=getchar();
    while(ch>‘9‘||ch<‘0‘)
    {
        if(ch==‘-‘)
            f=-1;
        ch=getchar();
    }
    while(ch>=‘0‘&&ch<=‘9‘)
    {
        ret=(ret<<1)+(ret<<3)+ch-‘0‘;
        ch=getchar();
    }
    return ret*f;
}
int n,q,a[1000005],op,x,val,l,r;
long long bit[1000005];
inline long long query(int x)
{
    long long ans=0;
    for(;x;x-=x&-x)
        ans+=bit[x];
    return ans;
}
inline void modify(int x,int y)
{
    for(;x<=n;x+=x&-x)
        bit[x]+=y;
    return;
}
int main()
{
    n=read();
    q=read();
    for(register int i=1;i<=n;i++)
    {
        a[i]=read();
        modify(i,a[i]);
    }
    while(q--)
    {
        op=read();
        if(op==1)
        {
            x=read();
            val=read();
            modify(x,val);
        }
        else
        {
            l=read();
            r=read();
            printf("%lld\n",query(r)-query(l-1));
        }
    }
    return 0;
}

树状数组区间修改,单点查询

树状数组区间修改,区间查询和

树状数组模板(持续更新)

标签:get   using   math   details   数组   summary   https   lin   html   

原文地址:https://www.cnblogs.com/Peter0701/p/11437411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!