hdu 3584 Cube
来源:互联网 发布:java微服务框架有哪些 编辑:程序博客网 时间:2024/05/17 00:54
三维树状数组,思维转化很有意思,好像是什么容斥原理。
主要原因是纯暴力肯定会超时,所以要优化,将某一点的和与该点状态想关联,用这样的方法来求解问题。
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int N=100+24;int p[N][N][N],n;int lowbit(int x){ return x&-x;}int sum(int x,int y,int z){ int i,j,k,ret=0; for(i=x;i>0;i-=lowbit(i)) for(j=y;j>0;j-=lowbit(j)) for(k=z;k>0;k-=lowbit(k)) ret+=p[i][j][k]; return ret%2;}void add(int x,int y,int z){ int i,j,k; for(i=x;i<105;i+=lowbit(i)) for(j=y;j<105;j+=lowbit(j)) for(k=z;k<105;k+=lowbit(k)) p[i][j][k]+=1;}int main(){ int m,i,j,k,a1,a2,b1,b2,c1,c2,t; while(~scanf("%d%d",&n,&m)) { memset(p,0,sizeof(p)); while(m--) { scanf("%d",&t); if(t==0) { scanf("%d%d%d",&a1,&b1,&c1); printf("%d\n",sum(a1,b1,c1)); } else { scanf("%d%d%d",&a1,&b1,&c1); scanf("%d%d%d",&a2,&b2,&c2); //可以画图来理解一下 add(a1,b1,c1); add(a1,b1,c2+1); add(a1,b2+1,c1); add(a1,b2+1,c2+1); add(a2+1,b2+1,c2+1); add(a2+1,b1,c2+1); add(a2+1,b2+1,c1); add(a2+1,b1,c1); } } } return 0;}
0 0
- hdu 3584 Cube
- hdu 3584 Cube
- HDU 3584 Cube
- hdu 3584 Cube
- hdu 6202 cube cube cube
- hdu 5.3.3 3584 Cube
- Cube HDU
- HDU 6202 cube cube 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(三维树状数组)
- Object-c集合的简单介绍
- 每天三道冲刺工作
- qt视图显示不同数据
- localtime函数与localtime_r函数区别
- php配置php-fpm启动参数及配置详解
- hdu 3584 Cube
- string常用类的学习
- visualstudio 2013连接mysql数据库
- 为什么子类不能访问基类的private成员(为什么要使用get,set方法)?为什么要这样设计?
- dubbo+zookeeper+spring的demo
- poj 1651 Multiplication Puzzle
- 使用Eclipse的maven构建一个web项目
- PHP生成条形码barcode
- spring mvc拦截器和<mvc:annotation-driven />的详解