求助树状数组
查看原帖
求助树状数组
356740
封禁用户楼主2020/7/29 19:33
#include <bits/stdc++.h>
#define lowbit(x) ((x) & - (x))
using namespace std;
int n,m,tree[500005],tmp;
inline unsigned int read(){
	char ch=getchar();
	long long x=0,f=1;
	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=getchar();
	return x*f;
}
inline void add(int x, int d) {
    while(x<=n) {
        tree[x] += d;
        x -= lowbit(x);
    }
}
inline int Sum(int x) {
    int sum=0;
    while(x>0) {
        sum += tree[x];
        x -= lowbit(x);
    }
    return sum;
}
int main(void) {
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++) {
        tmp=read();
        add(i,tmp);
    }
    for(int i=0;i<m;i++) {
        int opt=read(),x=read(),y=read();
        if(opt&1) add(x,y);
        else printf("%d",Sum(y)-Sum(x-1));
    }
    return 0;
}

感觉就是标准树状数组模板啊 咋会TLE

2020/7/29 19:33
加载中...