Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
各位大牛们,看看我的代码咋就是wa呢?感激不尽....(错的快让我发飙了)#include <iostream> using namespace std; #define N 100005 struct point{ int a,b,lr,rr; //a,b表示区间的两端 long long value,ed; }; point st[N*4]; int val[N],tot=0; long long init(int a,int b); long long getsum(int root,int a,int b); long long add(int root,int a,int b,int c); int main() { int n,m,i,x,y,z; scanf("%d %d",&n,&m); for(i=0;i<n;i++) scanf("%d",&val[i]); init(0,n-1); for(i=0;i<m;i++) { char ch; getchar(); scanf("%c",&ch); if(ch=='Q') { scanf("%d %d",&x,&y); printf("%lld\n",getsum(0,x-1,y-1)); } else if(ch=='C') { scanf("%d %d %d",&x,&y,&z); add(0,x-1,y-1,z); } else ; } return 0; } long long init(int a,int b) //返回a到b的sum值,对st进行初始化 { int cur=tot; long long g,h; st[cur].a=a; st[cur].b=b; st[cur].ed=0; if(a>b) return 0; else if(a==b) { st[cur].lr=-1; st[cur].rr=-1; st[cur].value=val[a]; return st[cur].value; } else { tot++; st[cur].lr=tot; g=init(a,(a+b)/2); tot++; st[cur].rr=tot; h=init((a+b)/2+1,b); st[cur].value=g+h; return st[cur].value; } } long long getsum(int root,int a,int b) //返回a到b区间的sum值 { if(root==-1) return 0; if(st[root].a>a) a=st[root].a; if(st[root].b<b) b=st[root].b; if(a>b) return 0; else if(a==st[root].a&&b==st[root].b) return st[root].value+st[root].ed*(b-a+1); else return getsum(st[root].lr,a,b)+getsum(st[root].rr,a,b)+st[root].ed*(long long)(b-a+1); } long long add(int root,int a,int b,int c) //返回a到b区间的sum值,更新st的值 { if(root==-1) return 0; if(st[root].a>a) a=st[root].a; if(st[root].b<b) b=st[root].b; if(a>b) return 0; else if(a==st[root].a&&b==st[root].b) { st[root].ed+=c; return st[root].value+st[root].ed*(long long)(b-a+1); } else { st[root].value=add(st[root].lr,a,b,c)+add(st[root].rr,a,b,c); return st[root].value+st[root].ed*(long long)(b-a+1); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator