一、题目描述

在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……)。洞口都在一个大小为n的正方形中。这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1)。洞口所在的位置都是整点,就是横纵坐标都为整数的点。而 SuperBrother 也不时地会想知道某一个范围的鼹鼠总数。这就是你的任务。

二、输入格式

每个输入文件有多行。第一行,一个数n,表示鼹鼠的范围。以后每一行开头都有一个数m,表示不同的操作:m==1,那么后面跟着3个数x,y,k,表示在点(x,y)处新出现了k只鼹鼠;m==2,那么后面跟着4个数x1,y1,x2,y2,表示询问矩形内的鼹鼠数量;m==3,表示老师来了,不能玩了。保证这个数会在输入的最后一行。询问数不会超过10000

三、输出格式

对于每个m=2,输出一行数,这行数只有一个数,即所询问的区域内鼹鼠的个数。

四、样例输入

4
1 2 2 5
2 0 0 2 3
3

五、样例输出

5

六、AC代码

#include<cstdio>
using namespace std;
const int maxn=1100+5;
long long f[maxn][maxn],n;
int lowbit(int x){return x&-x;
}
void add(int x,int y,long long k){for(int i=x;i<=n;i+=lowbit(i)){for(int j=y;j<=n;j+=lowbit(j)){f[i][j]+=k;}}
}
long long deal(int x,int y){long long ans=0;for(int i=x;i>0;i-=lowbit(i)){for(int j=y;j>0;j-=lowbit(j)){ans+=f[i][j];}}return ans;
}
int main(){freopen("mole.in","r",stdin);freopen("mole.out","w",stdout);scanf("%lld",&n);n++;int m;scanf("%d",&m);while(m!=3){if(m==1){int x,y;long long k;scanf("%d%d%lld",&x,&y,&k);add(x+1,y+1,k);}if(m==2){int x1,y1,x2,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);printf("%lld\n",deal(x2+1,y2+1)-deal(x2+1,y1)-deal(x1,y2+1)+deal(x1,y1));}scanf("%d",&m);}return 0;
}

NOIP刷题记录(打鼹鼠)——二维树状数组板子题相关推荐

  1. BZOJ 3132 上帝造题的七分钟(二维树状数组)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132 题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值:(2)查询某 ...

  2. HDU-水饺基情 二维树状数组

    该题就是简单的二维树状数组,保留一份棋盘的最新状态即可,树状数组里面就只保留在原有基础上增加或者减少的某一种饺子的数量. 代码如下: #include <cstring> #include ...

  3. 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组

    题目大意 维护一个\(n\times m\)的矩阵,有两种操作: \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\). \(2~ ...

  4. 二维树状数组(水题) POJ1195

    前段时间遇到线段树过不了,树状数组却过了的题.(其实线段树过得了的) 回忆了下树状数组. 主要原理,还是二进制位数,每一项的和表示其为它的前((最后一位1及其后)的二进制数)和,可从二进制图来看.(用 ...

  5. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  6. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】

    树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...

  7. HDU-4456 Crowd 二维树状数组+坐标转换

    题意:给定一个N*N的网格,现在M组操作,一种操作时改变网格上的某个单点的权值,另外一种操作是求到一点曼哈顿距离为小于等于k的所有的权值和,初始化网格所有点的权值为0. 解法:这题如果没有那些特定的条 ...

  8. hdu 1892二维树状数组

    这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...

  9. HDU - 5517 Triple(三维偏序-二维树状数组/CDQ分治)

    题目链接:点击查看 题目大意:给出 n 个二元对 ( a , b ) 和 m 个三元对 ( c , d , e ),对于所有 b == e 的二元对和三元对,可以通过某种运算形成一个新的三元对 ( a ...

最新文章

  1. MyCat - 使用篇(1)
  2. Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
  3. Converting KVM VirtualHost To VMware vSphere VirtualHost
  4. 趣学算法之哥德巴赫猜想的实现
  5. Postman使用入门
  6. ieee754浮点数转换工具_关于JS浮点数运算不精确的原因和解决方案
  7. C++ 运算符重载的原理
  8. jQuery插件管理方案
  9. Bzoj2527--Poi2011Meteor
  10. c语言程序图片截取,C++实现屏幕截图功能
  11. 0441-Impala动态资源池及放置规则使用
  12. 《我奋斗了18年才和你坐在一起喝咖啡》,而我奋斗了18年,不是为了和你一起喝咖啡(转载)...
  13. 优化 WindowsXPSP2 系统服务项设置
  14. 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
  15. [死磕 Spring 21/43] --- IOC 之 Factory 实例化 bean
  16. 不能用float、double 存储金额——BigDecimal详解
  17. 浅谈毕业院校对程序员的影响--蝴蝶如何飞的过沧海?
  18. GROUP BY 条件查询最新时间记录
  19. mysql xtrabackup-v2_xtrabackup 备份问题
  20. 大厂秋招_春招面试全流程如何拿到大厂offer?Java进阶图谱

热门文章

  1. php activedocument-printout(),php二种读取和创建word文档方法
  2. zynqMP平台在vitis2020.1下烧录QSPI flash各种失败和错误的治疗方法
  3. Linux学习基本步骤
  4. 莎士比亚(50条名句)内容大全 - 谁料过去的繁华,化作今朝的泥土 - 作者 第7页
  5. ubuntu20.04 root用户无法打开chrome游览器,一直转圈圈问题
  6. MacOS 优化指南 - 打造最舒适的交互体验
  7. 使用ADB“推送/提取/安装”文件进手机(华为U8825D)及错误举例
  8. SAP BW QUERY VARIABLES (BW增强变量)
  9. java enum从几开始,Enum应该从0还是1开始?
  10. iframe回调window.parent第三方地址,域名显示第三方地址