社区讨论

树状数组板子题求调

题目总版参与者 5已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mhksv3zn
此快照首次捕获于
2025/11/05 00:45
4 个月前
此快照最后确认于
2025/11/08 07:46
3 个月前
查看原帖
70pts 后三个点错
CPP
#include<bits/stdc++.h>
//#include<bits/extc++.h>
#define int long long
#define cen cout << endl
#define c1 cout << 1 << " "
#define cs cout << " "
using namespace std;
//using namespace __gnu_pbds;

void f(){

}
int n,m;
struct BIT{
    int ar[500009];
    int lowbit(int x){return x&-x;}
    void add1(int x,int val){for(int i=x;i<=n;i+=lowbit(i)){ar[i]+=val;}}
    void add2(int l,int r,int val){add1(l,val);add1(r+1,-val);}
    int query2(int x,int ans=0){for(int i=x;i;i-=lowbit(i)){ans+=ar[i];}return ans;}
    int query1(int l,int r){return query2(r)-query2(l-1);}
};
int xx[500009];
signed main(){
    BIT t;
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        cin >> xx[i];
        t.add2(i,i,xx[i]);
    }
    for(int i=1;i<=m;i++){
        int op,x,y,k;
        cin >> op;
        if(op==1){
            cin >> x >> y >> k;
            t.add2(x,y,k);
        }
        else{
            cin >> x;
            cout << t.query2(x);
            cen;
        }
    }
	return 0;
}

宣贯

回复

5 条回复,欢迎继续交流。

正在加载回复...