1470. UFOs(三维树状数组)
2024-08-25 23:02:35
最简单的三维树状数组
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define lowbit(x) x&(-x)
int re[][][],n;
int getsum(int x,int y,int z)
{
int s = ,i,j,g;
for(i = x; i >= ; i -= lowbit(i))
for(j = y ; j>= ; j -= lowbit(j))
for(g = z ; g >= ; g-=lowbit(g))
s+=re[i][j][g];
return s;
}
void add(int x,int y,int z,int da)
{
int i,j,g;
for(i = x ; i <= n ; i+=lowbit(i))
for(j = y ; j <= n ; j+=lowbit(j))
for(g = z ; g <= n ; g+=lowbit(g))
re[i][j][g]+=da;
}
int main()
{
int k,x1,x2,x3,x4,x5,x6,p;
scanf("%d",&n);
while(scanf("%d",&k)!=EOF)
{
if(k==)
break;
if(k==)
{
scanf("%d%d%d%d",&x1,&x2,&x3,&p);
add(x1+,x2+,x3+,p);
}
else
{
scanf("%d%d%d%d%d%d",&x1,&x2,&x3,&x4,&x5,&x6);
x4+=,x5+=,x6+=;
int ans = ;
ans+=getsum(x4,x5,x6);
ans-=getsum(x1,x5,x6);
ans-=getsum(x4,x2,x6);
ans-=getsum(x4,x5,x3);
ans+=getsum(x1,x5,x3);
ans+=getsum(x4,x2,x3);
ans+=getsum(x1,x2,x6);
ans-=getsum(x1,x2,x3);
printf("%d\n",ans);
}
}
return ;
}
最新文章
- 【Android】《App研发录》总结
- Redis中struct运用
- MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
- Sonar相关资料
- 【转】C#程序打包安装部署之添加注册表项
- How to Notify Command to evaluate in mvvmlight
- ORA-12012 error on auto execute of job 8887
- volatile用处说明
- <;body>;标签,网页上显示的内容放在这里
- Android仿IOS回弹效果 ScrollView回弹 总结
- 二分法查找-java案例详解
- java线程(一)
- 或许你不知道的10条SQL技巧(转自58沈剑原创)
- Junit4测试报错
- python3下Django2.0配置最新xadmin详解
- ASP.NET MVC + EF 更新的几种方式
- 第一阶段——站立会议总结DAY04
- TCP/IP协议(1):各层协议帧格式
- [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误
- Android后台处理最佳实践(Best Practices for Background Jobs)