一维&&二维树状数组

2021-04-13 00:26

阅读:421

标签:查询   BMI   rabbit   ase   pre   区间修改   while   cout   lang   

高级树状数组讲解:https://www.cnblogs.com/RabbitHu/p/BIT.html

树状数组

一维树状数组

单点修改,区间查询

https://loj.ac/problem/130

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>q;
    for(int i=1;i>t;
        add(i,t);
    }
    while(q--){
        int p,x,y;cin>>p>>x>>y;
        if(p==1){
            add(x,y);
        }else{
            cout

区间修改,单点查询

https://loj.ac/problem/131

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>q;
    for(int i=1;i>cha[i];
        add(i,cha[i]-cha[i-1]);
    }
    while(q--){
        int op;cin>>op;
        if(op==1){
            int l,r,x;cin>>l>>r>>x;
            add(l,x);
            add(r+1,-x);
        }else{
            int i;cin>>i;
            cout

区间修改,区间查询

https://loj.ac/problem/132

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>q;
    for(int i=1;i>t[i];
        b.add(i,t[i]-t[i-1]);
        bi.add(i,i*(t[i]-t[i-1]));
    }
    while(q--){
        int op;cin>>op;
        int l,r,x;cin>>l>>r;
        if(op==1){
            cin>>x;
            b.add(l,x);
            b.add(r+1,-x);
            bi.add(l,x*l);
            bi.add(r+1,-x*(r+1));
        }else{
            cout

二维树状数组

单点修改,区间查询

https://loj.ac/submission/868327

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>m;
    int op,a,b,c,d,k;
    while(cin>>op){
        if(op==1){
            cin>>a>>b>>k;
            add(a,b,k);
        }else{
            cin>>a>>b>>c>>d;
            cout

区间修改,单点查询

https://loj.ac/problem/134

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>m;
    int op,a,b,c,d,k;
    while(cin>>op>>a>>b){

        if(op==1){
            cin>>c>>d>>k;
            update_add(a,b,c,d,k);
        }else{
            cout

区间修改,区间查询

https://loj.ac/problem/135

#include
#define INF 0x3f3f3f3f
#define DOF 0x7f7f7f7f
#define endl ‘\n‘
#define mem(a,b) memset(a,b,sizeof(a))
#define debug(case,x); cout>n>>m;
    int op,x1,y1,x2,y2,d;
    while(cin>>op){
        cin>>x1>>y1>>x2>>y2;
        if(op==1){
            cin>>d;
            update_add(x1,y1,x2,y2,d);
        }else{
            cout

一维&&二维树状数组

标签:查询   BMI   rabbit   ase   pre   区间修改   while   cout   lang   

原文地址:https://www.cnblogs.com/waryan/p/13347234.html


评论


亲,登录后才可以留言!