Ural 1470. UFOs
来源:互联网 发布:易语言准星源码 编辑:程序博客网 时间:2024/06/05 02:24
三维树状数组,之前没有碰到过树状数组的问题,直接撞三维上的表示很蛋疼。拖了几天了,有点想不下去。然后看了下题解,发现自己略白痴。。。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;#define INF 100000000;#define N 130#define MIN(a,b) ((a)<(b)?(a):(b))int c[N][N][N];int n;int lowbit(int x){ return x&(-x);}int sum(int x,int y,int z){ int sum=0; int x0=x,y0=y,z0=z; while(x>0) { y=y0; while(y>0) { z=z0; while(z>0) { sum+=c[x][y][z]; z-=lowbit(z); } y-=lowbit(y); } x-=lowbit(x); } return sum;}void add(int x,int y,int z,int d){ int x0=x,y0=y,z0=z; while(x<=n) { y=y0; while(y<=n) { z=z0; while(z<=n) { c[x][y][z]+=d; z+=lowbit(z); } y+=lowbit(y); } x+=lowbit(x); }}int main(){ scanf("%d",&n); int m; int x,y,z,k,x1,y1,z1; while(scanf("%d",&m),m!=3) { if(m==1) { scanf("%d%d%d%d",&x,&y,&z,&k); add(x+1,y+1,z+1,k); } else if(m==2) { scanf("%d%d%d%d%d%d",&x,&y,&z,&x1,&y1,&z1); k=sum(x1+1,y1+1,z1+1) - sum(x1+1,y1+1,z) - sum(x1+1,y,z1+1) - sum(x,y1+1,z1+1) + sum(x,y,z1+1) + sum(x,y1+1,z) + sum(x1+1,y,z) - sum(x,y,z); printf("%d\n",k); } } return 0;}
- Ural 1470. UFOs
- ural 1470 UFOs [树状数组]
- ural - 1470 - UFOs(树状数组)
- ural - 1470 - UFOs(三维树状数组)
- UFOs
- UFOs
- UFOs(树状数组)
- UFOs(三维树状数组)
- URAL
- 【ural】
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- 我在一间黑暗的逛街房子里坐着
- CodeForces #209(Div.2) - AB
- 你每次都说看别人短信是不对的
- 《UNIX环境高级编程》笔记--fork系列函数
- 基于Hadoop的云盘系统客户端技术难点
- Ural 1470. UFOs
- 一个比较愚蠢的办法,解决excel表,关于导出时间类型转换成QString的问题
- ubuntu下软件安装和卸载
- ORACLE单行函数与多行函数之五:转换函数示例
- 基于antlr的表达式解析器——函数定义
- OpenGL---GLUT教程(三) GLUT窗口设置
- 输入外挂
- 我看着那个吓我的孩子屁颠屁颠的跑了
- 去掉a标签的虚框