| ||||||||||
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 |
我觉得不行吧...MS没办法处理题目中c的操作In Reply To:这个题可以用树状数组吗? Posted by:anghoo at 2008-07-24 22:16:29 > 我觉得得这题用树状数组更好解呀,为什么我就T了呢? > 望大牛指点! > #include <iostream> > using namespace std; > #define temp 100005 > int cc[temp]; > int n; > > int lowbit(int x) > { > return x&(x^(x-1)); > } > > __int64 sum(int pos) > { > __int64 num=0; > while(pos>0) > { > num+=cc[pos]; > pos-=lowbit(pos); > } > return num; > } > void update(int pos,int d) > { > while(pos<=n) > { > cc[pos]+=d; > pos+=lowbit(pos); > } > } > > int main() > { > int i,j,k,q; > scanf("%d%d",&n,&q); > for(i=0;i<n;i++) > { > scanf("%d",&k); > update(i+1,k); > } > while(q--) > { > char ch; > int a,b,c; > getchar(); > scanf("%c",&ch); > if(ch=='Q') > { > scanf("%d%d",&a,&b); > printf("%I64d\n",sum(b)-sum(a-1)); > } > if(ch=='C') > { > scanf("%d%d%d",&a,&b,&c); > for(i=a;i<=b;i++) > update(i,c); > } > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator