ickchen2

很囧的POJ2155

这是一道树状数组的题目~~
居然可以把ADD和SUM反过来干...
以后有时间要研究研究下~~

#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
#define M 1003
using namespace std;
int g[M][M];
int n;
void add(int x,int y)
{
     while(y<=n)
     {
         int xx=x;
         while(xx<=n)
         {
             g[xx][y]++;
             xx+=xx&-xx;
         }
         y+=y&-y;
     }

}
int sum(int x2,int y2)
{
    int s=0;
    while(y2)
    {
        int xx=x2;
        while(xx)
        {
            s+=g[xx][y2];
            xx-=xx&-xx;
        }
        y2-=y2&-y2;
    }
    return s;
}
int main()
{
    int cs;
    scanf("%d",&cs);
    while(cs--)
    {
        memset(g,0,sizeof(g));
        int t;
        scanf("%d%d",&n,&t);
        for(int i=0;i<t;i++)
        {
            char op;
            getchar();
            scanf("%c",&op);
            //cout<<op<<endl;
            if(op=='C')
            {
                int x1,y1,x2,y2;
                scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                add(x1,y1);
                add(x1,y2+1);
                add(x2+1,y1);
                add(x2+1,y2+1);
            }
            else
            {
                int x1,y1;
                scanf("%d%d",&x1,&y1);
                printf("%d\n",sum(x1,y1)%2);
            }
        }
        printf("\n");
    }
}

posted on 2008-08-25 14:33 神之子 阅读(404) 评论(0)  编辑 收藏 引用 所属分类: ACM题解


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜