hdu-Cube(三位树状数组)
本题主要考察空间想象能力,同样注意下标
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define M 105
int map[M][M][M];
int lowbit(int x)
{return x&(-x);
}
void add(int x,int y,int z,int num)
{for(int i = x; i < M - 2; i+=lowbit(i))for(int j = y; j < M - 2; j+=lowbit(j))for(int r = z; r < M - 2; r+=lowbit(r))map[i][j][r] += num;
}
int getsum(int x,int y,int z)
{int res = 0;for(int i = x; i > 0; i-=lowbit(i))for(int j = y; j > 0; j-=lowbit(j))for(int r = z; r > 0; r-=lowbit(r))res += map[i][j][r];return res;
}
int main()
{int n,m,op;int x1,x2,y1,y2,z1,z2;while(~scanf("%d%d",&n,&m)){memset(map,0,sizeof(map));for(int i = 0; i < m; i++){scanf("%d",&op);if(op == 1){scanf("%d%d%d",&x1,&y1,&z1);scanf("%d%d%d",&x2,&y2,&z2);x1++,x2++,y1++,y2++,z1++,z2++;add(x1,y1,z1,1);add(x1,y2+1,z1,-1);add(x2+1,y1,z1,-1);add(x2+1,y2+1,z1,1);add(x1,y1,z2+1,-1);add(x1,y2+1,z2+1,1);add(x2+1,y1,z2+1,1);add(x2+1,y2+1,z2+1,-1);}else{int sum = 0;scanf("%d%d%d",&x1,&y1,&z1);sum = getsum(x1+1,y1+1,z1+1)&1;printf("%d\n",sum);}}}
}
hdu-Cube(三位树状数组)相关推荐
- 夜深人静写算法(三)- 树状数组
目录 一.从图形学算法说起 1.Median Filter 概述 2.r pixel-Median Filter 算法 3.一维模型 4.数据结构的设计 ...
- HDU 3584 Cube (三维树状数组)
Problem Description Given an N*N*N cube A, whose elements are either 0 or 1. A[i, j, k] means the nu ...
- hdu 4262 Juggler(树状数组)
题意:某人手上有一串珠子,顺时针编号1--n,每次可进行三种操作:顺时针旋转一个珠子,逆时针旋转一个珠子,将手中的珠子移去(移去后顺时针方向下一个珠子进入手中),问按标号12345顺序将所有珠子逐一移 ...
- HDU ACM 4031 Attack (树状数组--单点查询+区间更新)
http://acm.hdu.edu.cn/showproblem.php?pid=4031 用了树状数组的区间更新 单点查找(一般为单点更新 区间查找) 例如 区间(2,4)加1 则Updata(2 ...
- HDU 1556 前缀和 树状数组 线段树
解法一: a[i]表示以 i作为起点,对 i-n的气球全部上色的次数 对(start,end)区间上色 ++a[start] --a[end+1]抵消掉 end+1-n的部分 问题转换为求 a的前缀 ...
- hdu 4125 Moles(kmp+树状数组)
题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次. 题解: 建树的时候 ...
- CF869 E. The Untended Antiquity 二位树状数组+hash
题意 一个地图,然后三种操作 1.一个矩阵四周加上障碍 2.一个矩阵四周的障碍消除 3.问你两个点之间是否纯在一条路径不经过障碍 题解 我们可以给每一个矩阵一个hash值 然后将矩阵里面的点都 ...
- HDU 3333HDU-3874 Necklace 离线树状数组
这题是要求一段区间内的不重复的数字之和.我们通过对询问区间的右端点进行排序,然后记录每一数字的上一次的出现的位置,由于询问都是不回溯的那么就可以线性的更新了. #include &l ...
- hdu 1892二维树状数组
这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...
最新文章
- JAVA批量上传下载Excel_如何实现批量上传----------Java解析excel
- 【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS
- 文本框 清空_VBA代码中利用文本框,完成人机对话过程
- 全球及中国操纵杆控制系统行业应用动态与十四五形势分析报告2022版
- ConcurrentModificationException异常解决办法
- 上海电力大学c语言程序设计章测试,上海电力学院c语言报告:实验8 指针.doc
- .Net Framework学习的10个建议
- 计算机基础0018,自学考试计算机用基础 0018复习资料.doc
- docker与虚拟机性能比较
- 产品配置管理相关通知
- java反射机制原理详解
- java-php-python-ssm在线教学质量评价系统计算机毕业设计
- Keil--视力保护--背景设置
- 复数,实数,幂函数,指数函数
- 局域网内即时通信软件 ZSCQ -工作进度记录表
- 我可以抱你吗?linux
- 给找工作的同学一点参考
- 大牛教学 | 在51单片机上用C语言实现循环点亮8盏LED灯
- 领英精灵安全吗?附LinkedIn领英开发客户的关键点
- uni-app web-view调用谷歌地图