| ||||||||||
| 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