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\n",sum(x,y,z) % 2);

69             }

70         }

71     }

72     return 0;

73 }
View Code

 

你可能感兴趣的:(cube)