• 【HDOJ】3584 Cube


    三位树状数组。

    /* 3584 */
    #include <iostream>
    #include <string>
    #include <map>
    #include <queue>
    #include <vector>
    #include <algorithm>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <climits>
    #include <cctype>
    using namespace std;
    
    #define MAXN 105
    
    bool cnt[MAXN][MAXN][MAXN];
    int n, m;
    
    inline int lowest(int x) {
        return x&-x;
    }
    
    bool sum(int x, int y, int z) {
        int i, j, k;
        int ret = 0;
        
        for (i=x; i; i-=lowest(i)) {
            for (j=y; j; j-=lowest(j)) {
                for (k=z; k; k-=lowest(k)) {
                    ret += cnt[i][j][k];
                }
            }
        }
        return (ret&1) ? true:false;
    }
    
    void update(int x, int y, int z) {
        int i, j, k;
        
        for (i=x; i<=n; i+=lowest(i)) {
            for (j=y; j<=n; j+=lowest(j)) {
                for (k=z; k<=n; k+=lowest(k)) {
                    cnt[i][j][k] = !cnt[i][j][k];
                }
            }
        }
    }
    
    int main() {
        int i, j, k;
        int x1, y1, z1, x2, y2, z2;
        
        #ifndef ONLINE_JUDGE
            freopen("data.in", "r", stdin);
            freopen("data.out", "w", stdout);
        #endif
        
        while (scanf("%d %d", &n, &m)!=EOF) {
            memset(cnt, false, sizeof(cnt));
            while (m--) {
                scanf("%d", &i);
                if (i) {
                    scanf("%d%d%d%d%d%d", &x1,&y1,&z1, &x2,&y2,&z2);
                    update(x1, y1, z1);
                    update(x1, y1, z2+1);
                    update(x1, y2+1, z2+1);
                    update(x1, y2+1, z1);
                    update(x2+1, y1, z1);
                    update(x2+1, y1, z2+1);
                    update(x2+1, y2+1, z2+1);
                    update(x2+1, y2+1, z1);
                } else {
                    scanf("%d %d %d", &x1, &y1, &z1);
                    k = sum(x1, y1, z1);
                    if (k)
                        puts("1");
                    else
                        puts("0");
                }
            }
        }
        
        return 0;
    }
  • 相关阅读:
    浏览器返回按钮不会触发onLoad事件
    js常用方法
    清除浮动
    Hbuilder快捷键
    页面跳转
    castapp.js颜色配置
    mui学习
    css 特殊使用技巧
    mui框架如何实现页面间传值
    从0到千万级访问量网站架构演变史
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4363307.html
Copyright © 2020-2023  润新知