zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    mybatis05--多条件的查询
    mybatis04--Mapper动态代理实现
    mybatis03--字段名和属性名不一致
    mybatis02--增删改查
    myBatis01
    hibernate12--缓存
    hibernate11--Criteria查询
    hibernate10--命名查询
    hibernate09--连接查询
    (转载)閱讀他人的程式碼(5)找到程式入口,再由上而下抽絲剝繭
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4614244.html
Copyright © 2011-2022 走看看