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 |
我的怎么超时了?求大牛看看!!!#include <stdio.h> #define __int64 int #define len 100000 typedef struct node { int lchild; int rchild; int sum; }Node; Node a[len*100]; int num[len]; void bulit(int s,int e,int step) { int i,sum=0,mid; for(i=s;i<=e;i++) sum+=num[i]; a[step].lchild=s; a[step].rchild=e; if(s==e) { a[step].sum=sum; return ; } else { mid=(s+e)>>1; if(s<e) { bulit(s,mid,2*step); bulit(mid+1,e,2*step+1); a[step].sum=sum; } } } void print(int s,int e,int step) { int mid; if(s==e) { printf("%d %d %d %d\n",step,a[step].lchild,a[step].rchild,a[step].sum); return ; } else { mid=(s+e)>>1; print(s,mid,step*2); print(mid+1,e,2*step+1); printf("%d %d %d %d\n",step,a[step].lchild,a[step].rchild,a[step].sum); } } int query(int s,int t,int step) { int mid; if(s==a[step].lchild&&t==a[step].rchild) return a[step].sum; else { mid=(a[step].lchild+a[step].rchild)>>1; if(t<=mid) return query(s,t,2*step); else if(mid<s) return query(s,t,2*step+1); else return query(s,mid,2*step)+query(mid+1,t,2*step+1); } } void update(int s,int e,int step,int value) { int sum=0,i,mid; for(i=s;i<=e;i++) sum+=value; a[step].sum+=sum; if(a[step].lchild==a[step].rchild) return; else { mid=(a[step].lchild+a[step].rchild)>>1; if(mid<s) update(s,e,2*step+1,value); else if(mid>=e) update(s,e,2*step,value); else { update(s,mid,2*step,value); update(mid+1,e,2*step+1,value); } } } int main() { int n,m,i,s,e,value; char op; while(scanf("%d %d",&n,&m)!=EOF) { getchar(); for(i=1;i<=n;i++) scanf("%d",&num[i]); getchar(); bulit(1,n,1); while(m--) { scanf("%c",&op); if(op=='Q') { scanf("%d %d",&s,&e); //print(1,n,1); printf("%d\n",query(s,e,1)); } else if(op=='C') { scanf("%d %d %d",&s,&e,&value); update(s,e,1,value); // print(1,n,1); } if(m) getchar(); } } return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator