1470

最简单的三维树状数组

 #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 ;
}

最新文章

  1. 【Android】《App研发录》总结
  2. Redis中struct运用
  3. MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
  4. Sonar相关资料
  5. 【转】C#程序打包安装部署之添加注册表项
  6. How to Notify Command to evaluate in mvvmlight
  7. ORA-12012 error on auto execute of job 8887
  8. volatile用处说明
  9. &lt;body&gt;标签,网页上显示的内容放在这里
  10. Android仿IOS回弹效果 ScrollView回弹 总结
  11. 二分法查找-java案例详解
  12. java线程(一)
  13. 或许你不知道的10条SQL技巧(转自58沈剑原创)
  14. Junit4测试报错
  15. python3下Django2.0配置最新xadmin详解
  16. ASP.NET MVC + EF 更新的几种方式
  17. 第一阶段——站立会议总结DAY04
  18. TCP/IP协议(1):各层协议帧格式
  19. [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误
  20. Android后台处理最佳实践(Best Practices for Background Jobs)

热门文章

  1. shell 实现word count
  2. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
  3. Sql查询除ID以外相同的数据
  4. Elasticsearch搜索类型(query type)详解
  5. AxureRP制作Tab标签
  6. ural 1069
  7. Django 后台搭建
  8. 大象的崛起!Hadoop七年发展风雨录
  9. URAL 1260 Nudnik Photographer(递推)
  10. POJ3258River Hopscotch(二分)