区间修改区间查询
#includeusing namespace std; #define int long long const int N=1e6+10; const int M=3e4+3e3; int n,t,m; char c; int sum1[N],sum2[N]; int lowbit(int x) { return x&(-x); } void update(int sum[],int id,int x) { for(int i=id;i<=n;i+=lowbit(i)) sum[i]+=x; } int getx(int sum[],int x) { int k=0; for(int i=x;i;i-=lowbit(i)) k+=sum[i]; return k; } signed main() { int x,y,z,s; ios::sync_with_stdio(0); cin>>n>>m; for(int i=1;i<=m;i++) { cin>>x>>y>>z>>s; if(x==1) { update(sum1,y,s); update(sum2,z,s); } else { cout< 单点修改区间查询
#includeusing namespace std; const int N=1e6+10; const int M=3e4+3e3; int n,t,m; char c; int sum[N]; int lowbit(int x) { return x&(-x); } void update(int id,int x) { for(int i=id;i<=n+1;i+=lowbit(i)) sum[i]+=x; } int getx(int x) { int k=0; for(int i=x;i;i-=lowbit(i)) k+=sum[i]; return k; } signed main() { int x,y; ios::sync_with_stdio(0); cin>>n>>m; for(int i=1;i<=m;i++) { cin>>c; if(c=='B')//单点增加 { cin>>x>>y; update(x,y); } else if(c=='A')//求0-x的和 { cin>>x; cout< >x>>y; update(x,-y); } } }```



