• hdu 3584 Cube


    题意:

    给出一个N * N * N规模的矩阵,有2种操作:
    1.把A[i, j, k]反转,(x1<=i<=x2,y1<=j<=y2,z1<=k<=z2).

    2.查询A[x,y,z]的值。

    思路:

    三维树状数组裸题,得画图好好推导一下。

    区间更新,单点查询。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    const int N = 105;
    int c[N][N][N];
    int n;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void add(int x,int y,int z)
    {
        for (int i = x;i <= n;i += lowbit(i))
        {
            for (int j = y;j <= n;j += lowbit(j))
            {
                for (int k = z;k <= n;k += lowbit(k))
                {
                    c[i][j][k]++;
                }
            }
        }
    }
    int getsum(int x,int y,int z)
    {
        int ans = 0;
        for (int i = x;i > 0; i-= lowbit(i))
        {
            for (int j = y;j > 0;j -= lowbit(j))
            {
                for (int k = z;k > 0;k -= lowbit(k))
                {
                    ans += c[i][j][k];
                }
            }
        }
        return ans;
    }
    int main()
    {
        int m;
        while (scanf("%d%d",&n,&m) != EOF)
        {
            memset(c,0,sizeof(c));
            while (m--)
            {
                int op;
                scanf("%d",&op);
                if (op == 1)
                {
                    int x1,y1,z1;
                    int x2,y2,z2;
                    scanf("%d%d%d",&x1,&y1,&z1);
                    scanf("%d%d%d",&x2,&y2,&z2);
                    add(x1,y1,z1);
                    add(x1,y2+1,z1);
                    add(x2+1,y1,z1);
                    add(x1,y1,z2+1);
                    add(x2+1,y2+1,z1);
                    add(x2+1,y1,z2+1);
                    add(x1,y2+1,z2+1);
                    add(x2+1,y2+1,z2+1);
                }
                else
                {
                    int x,y,z;
                    scanf("%d%d%d",&x,&y,&z);
                    int ans = getsum(x,y,z);
                    if (ans & 1) puts("1");
                    else puts("0");
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Linux系统命令与权限
    有关Linux目录相关内容
    Linux的命令以及基本使用
    操作系统的基本知识与Linux系统简介
    IT知识架构与操作系统简介
    windows下nginx支持php的配置
    提权操作函数
    c++内存中字节对齐问题详解 [ 转载 ]
    STL 容器效率的对比
    C++ 四种类型转换的介绍
  • 原文地址:https://www.cnblogs.com/kickit/p/9080885.html
Copyright © 2020-2023  润新知