https://vijos.org/p/1512

一个二维树状数组,注意树状数组不能出现0,把所有坐标+1即可,求子矩阵和为

sub(x2,y2) - sub(x1-1,y2) - sub(x2, y1-1) + sub(x1-1,y1-1)
其中sub为(1,1)到(x,y)矩阵的和。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ms(i,j) memset(i, j, sizeof(i));
using namespace std;
const int maxn = 1024 + 10;
int n;
int sum[maxn][maxn];
int lowbit(int x)
{return x&(-x);
}
void add(int x, int y, int num)
{int i,j;for (i=x; i <= maxn; i += lowbit(i)){for (j=y; j <= maxn; j += lowbit(j)){sum[i][j] += num;}}
}
int sub(int x, int y)
{int ret = 0;int i,j;for (i=x; i > 0; i -= lowbit(i)){for (j=y; j > 0; j -= lowbit(j)){ret += sum[i][j];}}return ret;
}int main ()
{ scanf("%d", &n);int m;scanf("%d",&m);while (m!=3){if (m==1){int x,y,k;scanf("%d%d%d", &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);x1++, x2++, y1++, y2++;int u = sub(x2,y2) - sub(x1-1,y2) - sub(x2, y1-1) + sub(x1-1,y1-1);printf("%d\n", u);}scanf("%d",&m);}return 0;
}

转载于:https://www.cnblogs.com/flyinthesky1/p/6384326.html

|Vijos|树状数组|P1512 SuperBrother打鼹鼠相关推荐

  1. 打鼹鼠 contest 树状数组练习 T7

    Description 在一个"打鼹鼠"的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大--).洞口都在一个大小为n(n<=1024)的正方形中.这个正方 ...

  2. Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】

    校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...

  3. vijos 1448 校门外的树 树状数组

    描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l. ...

  4. 快乐地打牢基础(4)——树状数组

    在解题的过程中,我们想维护一个数组的前缀和s[i] = A[1] + A[2] +-+A[i].我们改变任意一个A[i],那么S[i]之后都会发生变化,朴素写法调整前缀和S最坏的情况需要O(n)的时间 ...

  5. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  6. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  7. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  8. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  9. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

最新文章

  1. vue-cli 没有build如何配置_webpack4配置实现浏览器长期缓存
  2. Android之java.lang.UnsatisfiedLinkError(Failed to register native method ***callMethod1())解决办法
  3. Spring MVC总结
  4. “小众”之美——Ruby在QA自动化中的应用
  5. PHP 基础知识测试题
  6. 剑指 Offer II 056 二叉搜索树中两个节点之和
  7. 初探VMware View 5.1
  8. 动图怎么分解成静图?教你一键在线分解gif动图?
  9. 用python读取Excel数据
  10. 【nginx】nginx读书笔记
  11. 一个有点像舔狗的插件
  12. Windows11拼音打字不出现候选字词窗口
  13. python彩色蟒蛇绘制
  14. 网络学习 IP路由器寻址过程
  15. 【MySQL主从复制】使用MySQL8.0.17的clone技术在线搭建主从复制环境
  16. ibm服务器面板报警指示灯含意
  17. 做一个派发工单的微信小程序
  18. AWS Submit 2016 观感
  19. 论文阅读——BERT
  20. 对话框程序禁用系统的关闭按钮X

热门文章

  1. 关于2016年房价的思考
  2. tensorflow安装教程
  3. php 引入类_PHP 如何引入同一文件下多个class类
  4. IDEA---Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  5. keepoutlayer设定_AD的keepout层是做什么用的,如何使用
  6. tomcat需要设置环境变量吗
  7. 027_自己实现一个ArrayList
  8. 076_浏览器对象模型
  9. idea数字栏符号含义_关于铂金钻戒的几个常见数字符号含义,你都了解吗
  10. 微信电脑客户端登陆_电脑截图必须登陆QQ微信?这款截屏软件或许是更好的选择...