• 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;
    }
  • 相关阅读:
    【JS】事件传播
    【JS】鼠标跟随
    【JS】使用JS实现回到顶部按钮功能
    【JS】DOM获取元素方法
    【JS】DOM操作元素
    【JS】实现全选功能
    【JS】定时器的开启与关闭
    【JS】动态渲染页面
    【JS】标签页切换
    Elasticsearch(ES)简介
  • 原文地址:https://www.cnblogs.com/kickit/p/9080885.html
Copyright © 2020-2023  润新知