HDU 3584-Cube(三维BIT)
题意:
给你三维空间两种操作,给出两顶点坐标,把它们确定范围(长方体)内的数全部取反、查询给定点的值。初始全部为零
分析:
有了前面的知识,用BIT实现区间更新单点查询,再用多维实现即可
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
#define N 110
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
int a[N][N][N],n,m;
int lowbit(int x){
return x&(-x);
}
void add(int x,int y,int z){
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=n;j+=lowbit(j))
for(int k=z;k<=n;k=k+lowbit(k))
a[i][j][k]++;//统计奇偶性+1,-1一样
}
int sum(int x,int y,int z){
int num=;
for(int i=x;i>;i-=lowbit(i))
for(int j=y;j>;j-=lowbit(j))
for(int k=z;k>;k-=lowbit(k))
num+=a[i][j][k];
return num;
}
int main()
{
int op,x1,y1,z1,x2,y2,z2;
while(~scanf("%d%d",&n,&m)){
memset(a,,sizeof(a));
while(m--){
scanf("%d",&op);
if(op==){
scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2);
add(x1,y1,z1);
add(x1,y1,z2+);
add(x2+,y1,z1);
add(x1,y2+,z1);
add(x2+,y2+,z1);
add(x2+,y1,z2+);
add(x1,y2+,z2+);
add(x2+,y2+,z2+);
}
else{
scanf("%d%d%d",&x1,&y1,&z1);
printf("%d\n",sum(x1,y1,z1)%);
}
}
}
return ;
}
HDU 3584-Cube(三维BIT)的更多相关文章
- HDU - 3584 Cube (三维树状数组 + 区间改动 + 单点求值)
		HDU - 3584 Cube Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Subm ... 
- HDU 3584 Cube --三维树状数组
		题意:给一个三维数组n*n*n,初始都为0,每次有两个操作: 1. 翻转(x1,y1,z1) -> (x2,y2,z2) 0. 查询A[x][y][z] (A为该数组) 解法:树状数组维护操作次 ... 
- HDU 3584  Cube (三维 树状数组)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3584 Cube Problem Description Given an N*N*N cube A, ... 
- 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  3584  Cube (三维数状数组)
		Cube Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submi ... 
- HDU 3584 Cube 【 三维树状数组 】
		题意:还是那篇论文里面讲到的,三维树状数组http://wenku.baidu.com/view/1e51750abb68a98271fefaa8画个立方体出来对照一下好想一点 #include< ... 
- HDU 3584 Cube
		题目大意:给定一个体积为N*N*N立方体,每个单位小立方体A[x][y][z]里有一个值,初始值全部为0,我们可以对立方体进行一下两种操作: 0表示查询A[x][y][z]的奇偶性 1表示对子立方体的 ... 
- HDU 3584 Cube(三位树状数组)
		Cube Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submi ... 
- hdu 4670 Cube number on a tree(点分治)
		Cube number on a tree Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/ ... 
- HDU 3584 三维树状数组
		三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ... 
随机推荐
- jfinal想用到中大型项目中的项目经验分享
			jfinal 用在大项目中更加方便实用,节省无数的开发时间,代码量相对 SSH 减少 75% 至 90%,对于项目结构来说,简单提以下几点: 1:先分大模块,大模块内部可以根据划分的model分成子包 ... 
- hdu2717 Catch That Cow
			http://acm.hdu.edu.cn/showproblem.php?pid=2717 //水搜... #include<stdio.h> #include<math.h> ... 
- XML DOS 攻击
			内容来自此文:http://msdn.microsoft.com/en-us/magazine/ee335713.aspx DoS(Denial of service:拒绝服务)攻击由来已久(1992 ... 
- js的数据处理记录
			mongoDB的mapReduce返回的数据有可能会非常之多,所以单独拎出来先在浏览器里面玩一玩; // 数据源 var arr = [ {"address": "四川汶 ... 
- python 处理 Excel 表格
			see: http://www.cnblogs.com/sunada2005/p/3193300.html 一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表 ... 
- 如何配置svn服务器
			如果你已经安装好了VisualServer服务器,现在让我们一起来配置svn服务器吧. 工具/原料 VisualServer 配置VisualServer 找到VisualServer Manager ... 
- Android:修改版本
			修改AndroidManifest.xml下的Version即可 <uses-sdk android:minSdkVersion="14" android:targetSdk ... 
- Android Intent个人介绍
			在Android中要打开一个新的Activity, 不用说,肯定会用到Intent,Intent作为Android的四大组件之一,个人理解,Intent的作用就是用来在(其它三个不同组件)间进行通讯, ... 
- Android 学习(一)
			这几天被一些功能折磨的要死了,于是放下了这个,看点其它的东西,算是转移一下焦点.床头放了不少书籍,也都被翻阅过,翻阅过,却不曾细细的品味过,俗话说,书可借而不可买也,这话用到自己的身上丝毫不错.因为是 ... 
- long和Long的区别
			Java中数据类型分两种:1.基本类型:long,int,byte,float,double2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你自己 ... 
