HDU 3584 Cube(三维树状数组)
来源:互联网 发布:手机淘宝怎样撤销投诉 编辑:程序博客网 时间:2024/04/30 22:25
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3584
题意:三维的空间中有两个操作,初始时每个空间元素均为0,更新操作是0变1,1变0,是一个空间内的所有元素都更新,查询是问这个点的元素是0还是1。
题解:三维树状数组的IUPQ模型(Interval Update Point Query段更新,点求值)。
关键在更新的时候的边界处理,好像是容斥原理,并不懂,先记住吧。
二维的情况:
add(x1, y1, v);add(x1,y2+1, -v);add(x2+1,y1,-v);add(x2+1,y2+1,v);
三维的情况:
Add(x1,y1,z1,1);Add(x1,y1,z2+1,-1);Add(x1,y2+1,z1,-1);Add(x2+1,y1,z1,-1);Add(x2+1,y2+1,z1,1);Add(x2+1,y1,z2+1,1);Add(x1,y2+1,z2+1,1);<p>Add(x2+1,y2+1,z2+1,-1);</p>
这道题因为只需转变0和1,所以一直加1,求mod2就行.
代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>using namespace std;const int MAX=100+5;typedef long long LL;int bit[MAX][MAX][MAX];int N;int sum(int x,int y,int z){ int s=0; for(int i=x; i>0; i-=(i&(-i))) for(int j=y; j>0; j-=(j&(-j))) for(int k=z; k>0; k-=(k&(-k))) s+=bit[i][j][k]; return s;}void add(int x,int y,int z){ for(int i=x; i<=N; i+=(i&(-i))) for(int j=y; j<=N; j+=(j&(-j))) for(int k=z; k<=N; k+=(k&(-k))) bit[i][j][k]++;}int main(){ int n,m; while(scanf("%d%d",&n,&m)==2) { N=n; memset(bit,0,sizeof(bit)); for(int i=0; i<m; i++) { int op; scanf("%d",&op); if(op==1) { int x1,y1,z1,x2,y2,z2; scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2); add(x1,y1,z1); add(x1,y1,z2+1); add(x1,y2+1,z1); add(x1,y2+1,z2+1); add(x2+1,y1,z1); add(x2+1,y1,z2+1); add(x2+1,y2+1,z1); add(x2+1,y2+1,z2+1); } else if(op==0) { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("%d\n",sum(x,y,z)%2); } } } return 0;}
关键在更新的时候的边界处理,好像是容斥原理,并不懂,先记住吧。
0 0
- HDU 3584 Cube 【三维树状数组】
- hdu 3584 Cube //三维树状数组
- hdu 3584 cube #三维树状数组
- HDU 3584 Cube 三维树状数组
- HDU 3584 Cube(三维树状数组)
- 【树状数组(三维)】hdu 3584 Cube
- HDU 3584 Cube (三维树状数组)
- HDU 3584 Cube (三维树状数组)
- HDU 3584 Cube --三维树状数组
- HDU 3584 Cube(三维树状数组)
- HDU - 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- hdu 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- 三维三维三维树状数组模板题 hdu 3584 Cube
- 【树状数组+三维】杭电 hdu 3584 Cube
- hdu 3584 Cube 三维树状数组更新查找
- C# Winform中如何获取文件路径
- Java Ant build.xml详解
- 判断textarea文本域的字数是否超限
- C#缩放和裁剪图片
- php数据结构和算法
- HDU 3584 Cube(三维树状数组)
- Python 爬虫7——自定义Item Pipeline将数据存入MongoDB
- 足球移动动画
- android 内存泄漏
- angularJs
- Java IO操作——对象序列化(Serializable接口、ObjectOutputStream、以及与Externalizable接口的用法和区别)
- MySQL命名、设计及使用规范
- Activiti 网关
- android 属性动画