zoukankan      html  css  js  c++  java
  • poj 2155

    题目链接

    二维树状数组

    给出矩阵左上角和右下角坐标,矩阵里的元素 1变0 ,0 变1,然后给出询问,问某个点是多少。

    树状数组下标不能为0

    二维的每次更新都是从(1,1)到(x,y)

    要更新(x1,y1)到(x2,y2)的

    update(x2,y2);
    update(x2,y1-1);
    update(x1-1,y2);
    update(x1-1,y1-1);

    sum%2==1 时为1。

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    #define N 1005
    int arr[N][N],ans[N];
    int lowbit(int x){ return x&-x; }
    void update(int x1,int y1)
    {
        int i,j,sum=0;
        for(i=x1;i<N;i+=lowbit(i))
            for(j=y1;j<N;j+=lowbit(j))
                {
                    arr[i][j]++;
                }
    }
    int getsum(int x1,int y1)
    {
        int i,j,sum=0;
        for(i=x1;i>0;i-=lowbit(i))
            for(j=y1;j>0;j-=lowbit(j))
            sum+=arr[i][j];
        return sum;
    }
    int main()
    {
        int n,m,t,i,j,k,ans,kk;
        int x1,y1,x2,y2;
        char c;
        scanf("%d",&n);
        kk=0;
        while(n--)
        {
            if(kk) printf("
    ");
            scanf("%d%d",&m,&t);
            memset(arr,0,sizeof(arr));
            for(i=0;i<t;i++)
            {
                getchar();
                scanf("%c",&c);
                if(c=='C')
                {
                    scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                    x1++;y1++;x2++;y2++;
                    update(x2,y2);
                    update(x2,y1-1);
                    update(x1-1,y2);
                    update(x1-1,y1-1);
                }
                else
                {
                    scanf("%d%d",&x1,&y1);
                    printf("%d
    ",getsum(x1,y1)%2);
                }
            }
            kk=1;
        }
        return 0;
    }
    


     

  • 相关阅读:
    学习Python第三天
    学习Python第二天
    学习Python第一天
    centos7 系统优化
    crond计划任务
    day2
    day1
    A.浏览器访问 kube-apiserver 安全端口
    12.清理集群
    11.部署 harbor 私有仓库
  • 原文地址:https://www.cnblogs.com/riskyer/p/3278068.html
Copyright © 2011-2022 走看看