标签:
模板题
#include"cstdio" #include"cstring" #define lowbit(i) i&(-i) using namespace std; const int MAXN=100005; typedef long long LL; LL bit0[MAXN]; LL bit1[MAXN]; void add(LL* b,int i,int c) { while(i<=MAXN) { b[i]+=c; i+=lowbit(i); } } LL sum(LL* b,int i) { LL s=0; while(i>0) { s+=b[i]; i-=lowbit(i); } return s; } void solve(int n,int q) { for(int i=1;i<=n;i++) { int a; scanf("%d",&a); add(bit0,i,a); } for(int j=0;j<q;j++) { scanf("%*c"); char op; scanf("%c",&op); if(op==‘C‘) { int l,r,x; scanf("%d %d %d",&l,&r,&x); add(bit0,l,-x*(l-1)); add(bit1,l,x); add(bit0,r+1,x*r); add(bit1,r+1,-x); } else { LL res=0; int l,r; scanf("%d %d",&l,&r); res+=sum(bit0,r)+sum(bit1,r)*r; res-=sum(bit0,l-1)+sum(bit1,l-1)*(l-1); printf("%lld\n",res); } } } int main() { int n,q; while(scanf("%d %d",&n,&q)!=EOF) { memset(bit0,0,sizeof(bit0)); memset(bit1,0,sizeof(bit1)); solve(n,q); } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/4985878.html