zoukankan      html  css  js  c++  java
  • hdu 3584 Cube (三维树状数组,更新区间,查询单点)

    Cube

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)
    Total Submission(s): 1722    Accepted Submission(s): 898


    Problem Description
    Given an N*N*N cube A, whose elements are either 0 or 1. A[i, j, k] means the number in the i-th row , j-th column and k-th layer. Initially we have A[i, j, k] = 0 (1 <= i, j, k <= N). 
    We define two operations, 1: “Not” operation that we change the A[i, j, k]=!A[i, j, k]. that means we change A[i, j, k] from 0->1,or 1->0. (x1<=i<=x2,y1<=j<=y2,z1<=k<=z2).
    0: “Query” operation we want to get the value of A[i, j, k].
     
    Input
    Multi-cases.
    First line contains N and M, M lines follow indicating the operation below.
    Each operation contains an X, the type of operation. 1: “Not” operation and 0: “Query” operation.
    If X is 1, following x1, y1, z1, x2, y2, z2.
    If X is 0, following x, y, z.
     
    Output
    For each query output A[x, y, z] in one line. (1<=n<=100 sum of m <=10000)
     
    Sample Input
    2 5 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 2 2 2 0 1 1 1 0 2 2 2
     
    Sample Output
    1 0 1
     
    Author
    alpc32
     
    Source
     
    三维树状数组
    容斥那里注意一下。
    多组数据因为忘记清空c数组而wa了1次,细心!
    /*************************************************************************
        > File Name: code/hdu/3584.cpp
        > Author: 111qqz
        > Email: rkz2013@126.com 
        > Created Time: 2015年08月07日 星期五 14时01分53秒
     ************************************************************************/
    
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #include<vector>
    #include<stack>
    #define y0 abc111qqz
    #define y1 hust111qqz
    #define yn hez111qqz
    #define j1 cute111qqz
    #define tm crazy111qqz
    #define lr dying111qqz
    using namespace std;
    #define REP(i, n) for (int i=0;i<int(n);++i)  
    typedef long long LL;
    typedef unsigned long long ULL;
    const int inf = 0x7fffffff;
    const int N=1E2+5;
    int c[N][N][N];
    int n,m;
    int x1,y1,z1,x2,y2,z2;
    int lowbit( int x)
    {
        return x&(-x);
    }
    void update ( int x,int y,int z,int delta)
    {
        for ( int i = x; i <= n ; i = i + lowbit(i))
        {
        for ( int j =  y ; j <= n ; j = j + lowbit(j))
        {
            for ( int  k = z ; k  <= n ; k = k + lowbit(k))
            {
            c[i][j][k] += delta;
            }
        }
        }
    }
    
    int sum (int x,int y,int z)
    {
        int res = 0;
        for ( int i = x; i >= 1 ; i -= lowbit(i))
        {
        for ( int j = y ; j >= 1 ; j -= lowbit(j))
        {
            for ( int k = z ; k >= 1 ; k -= lowbit(k))
            {
            res = res + c[i][j][k];
            }
        }
        }
        return res;
    }
    int main()
    {
        int op;
        while (scanf("%d %d",&n,&m)!=EOF)
        {
        memset(c,0,sizeof(c));
        for ( int i = 1 ; i <= m ; i ++ )
        {
            scanf("%d",&op);
            if (op)
            {
            scanf("%d %d %d %d %d %d",&x1,&y1,&z1,&x2,&y2,&z2);
            update (x1,y1,z1,1);
            update (x1,y1,z2+1,1);
            update (x1,y2+1,z1,1);
            update (x2+1,y1,z1,1);
    
            update (x2+1,y2+1,z1,1);
            update (x2+1,y1,z2+1,1);
            update (x1,y2+1,z2+1,1);
            update (x2+1,y2+1,z2+1,1);
    
            }
            else
            {
            scanf("%d %d %d",&x1,&y1,&z1);
            cout<<sum(x1,y1,z1)%2<<endl;
            }
        }
        }
      
        return 0;
    }
  • 相关阅读:
    emacs 编程入门 函数
    boost库介绍
    jquery css attr
    html 相对定位 绝对 定位 css + div
    我常用的grep
    我常用的tar
    C#皮肤的用法(皮肤资源+使用实例下载)
    C#资源文件操作示例 创建资源和读取资源
    黄聪:c#中高效的excel导入sqlserver的方法
    黄聪:Delphi 中的 XMLDocument 类详解(2) 记要
  • 原文地址:https://www.cnblogs.com/111qqz/p/4710660.html
Copyright © 2011-2022 走看看