• HDU 3584 Cube 【 三维树状数组 】


    题意:还是那篇论文里面讲到的,三维树状数组
    http://wenku.baidu.com/view/1e51750abb68a98271fefaa8
    画个立方体出来对照一下好想一点

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> a
    10 #include<algorithm>  
    11 using namespace std;
    12 
    13 typedef long long LL;
    14 const int INF = (1<<30)-1;
    15 const int mod=1000000007;
    16 const int maxn=1000005;
    17 const int N=105;
    18 
    19 int n,m;
    20 int a[155][155][155],c[155][155][155];
    21 
    22 int lowbit(int x){ return x & (-x);}
    23 
    24 int sum(int x,int y,int z){
    25     int ret=0;
    26       for(int i=x;i>0;i-=lowbit(i))
    27        for(int j=y;j>0;j-=lowbit(j))
    28         for(int k=z;k>0;k-=lowbit(k))
    29         ret+=c[i][j][k];
    30         
    31         return ret;
    32 }
    33 
    34 void add(int x,int y,int z,int d){
    35     for(int i=x;i<=N;i+=lowbit(i))
    36        for(int j=y;j<=N;j+=lowbit(j))
    37         for(int k=z;k<=N;k+=lowbit(k))
    38         c[i][j][k] += d;
    39 }
    40 
    41 
    42 
    43 int main(){
    44     while(scanf("%d %d",&n,&m) != EOF){
    45         memset(c,0,sizeof(c));
    46         while(m--){
    47             int cmd;
    48             scanf("%d",&cmd);
    49             if(cmd == 1){
    50                 int x1,y1,z1,x2,y2,z2;
    51                 scanf("%d %d %d %d %d %d",&x1,&y1,&z1,&x2,&y2,&z2);
    52                 x1++;y1++;z1++;
    53                 x2++;y2++;z2++;
    54                 add(x1,y1,z1,1);
    55                 add(x2+1,y1,z1,-1);
    56                 add(x1,y2+1,z1,-1);
    57                 add(x2+1,y2+1,z1,1);
    58                 
    59                 add(x1,y1,z2+1,-1);
    60                 add(x2+1,y1,z2+1,1);
    61                 add(x1,y2+1,z2+1,1);
    62                 add(x2+1,y2+1,z2+1,-1);
    63             }
    64             else{
    65                 int x,y,z;
    66                 scanf("%d %d %d",&x,&y,&z);
    67                 x++;y++;z++;
    68                 printf("%d
    ",sum(x,y,z) % 2);
    69             }
    70         }
    71     }
    72     return 0;
    73 }
    View Code
  • 相关阅读:
    CUDA编程学习(一)
    数据挖掘领域的十大经典算法
    MATLAB代码加密生成.p文件
    如何读入文件下的图像序列
    什么是co-training
    Addthis使用
    html5新增及删除标签
    html5语法
    设置SecureCRT配色和解决乱码问题
    html5新增及废除属性
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4614244.html
Copyright © 2020-2023  润新知