【BZOJ1452】[JSOI2009]Count(树状数组)

题面

BZOJ
洛谷

题解

数据范围这么小?不是对于每个颜色开一个什么东西记一下就好了吗。
然而我不会二维树状数组?
不存在的,凭借多年树套树经验自己\(yy\)一下就好了。
一维是后缀加法,二维当然就是给整个矩阵加法了啊。

#include<iostream>
#include<cstdio>
using namespace std;
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
int n,m,Q,a[303][303];
int c[103][303][303];
int lb(int x){return x&(-x);}
void modify(int p,int x,int y,int w)
{for(int i=x;i<=n;i+=lb(i))for(int j=y;j<=m;j+=lb(j))c[p][i][j]+=w;
}
int Query(int p,int x,int y)
{int ret=0;for(int i=x;i;i-=lb(i))for(int j=y;j;j-=lb(j))ret+=c[p][i][j];return ret;
}
int Query(int p,int x1,int y1,int x2,int y2)
{return Query(p,x2,y2)-Query(p,x2,y1-1)-Query(p,x1-1,y2)+Query(p,x1-1,y1-1);
}
int main()
{n=read();m=read();for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)modify(a[i][j]=read(),i,j,1);Q=read();while(Q--){int opt=read();if(opt==1){int x=read(),y=read(),w=read();modify(a[x][y],x,y,-1);modify(a[x][y]=w,x,y,1);}else{int x1=read(),x2=read(),y1=read(),y2=read(),w=read();printf("%d\n",Query(w,x1,y1,x2,y2));}}return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/9763628.html

【BZOJ1452】[JSOI2009]Count(树状数组)相关推荐

  1. BZOJ1452 [JSOI2009]Count 树状数组

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1452 题意概括 一个n*m的矩阵,现在有2种操作: 修改某一个位置的值 求一个子矩阵某值的出现次数 ...

  2. 二维树状数组(bzoj 1452: [JSOI2009]Count)

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2496  Solved: 1451 [Submit][St ...

  3. 二维树状数组 BZOJ 1452 [JSOI2009]Count

    题目链接 裸二维树状数组 #include <bits/stdc++.h>const int N = 305; struct BIT_2D {int c[105][N][N], n, m; ...

  4. 【CF1194E】Count The Rectangles【类扫描线】【单调性】【树状数组】

    传送门 题意:给定NNN条与坐标轴平行的线段,保证不垂直的线段没有交点,求一共构成多少个矩形(以线段交点为顶点). 1≤N≤50001\leq N\leq50001≤N≤5000 显然是个数据结构乱搞 ...

  5. poj_3067 树状数组

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

  6. 树状数组 ---- 树状数组+动态维护前缀中位数 D. Omkar and Medians

    题目大意: 解题思路: 首先我们看他们的定义: bib_ibi​是a1,a2,a3,....,ai,ai+1,.......a2i−1a_1,a_2,a_3,....,a_i,a_{i+1},.... ...

  7. 树上启发式合并问题 ---- D. Tree and Queries[树上启发式合并+树状数组]

    题目链接 题目大意: 就是给你一棵树,树上每个节点都有一个颜色,在你mmm次询问每次询问给你一个节点uuu和一个数字kkk,问你在uuu这颗子树里面又少种颜色的结点个数是大于kkk; 解题思路: 看到 ...

  8. C - Group HDU - 4638[离线+树状数组]

    感觉比较抽象:举个例子:a[] = {3 1 2 5 4} 树状数组里面:1,1,-1,1,-1 sum(2):就是[1,2]区间能分成多少个连续的段:1和3 sum(3):1 2 3是一段 如果是询 ...

  9. poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★

    poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...

最新文章

  1. 面试干货——年底干货大放送,你准备好了吗?
  2. SQL Server 分区表的创建方法与管理
  3. openmp并行编程_OpenMP实现生产者消费者问题
  4. SAS 读取数据文件
  5. mui + php,GitHub - alphaphp/mui-kidApp: 基于 MUI 构建一个具有 90 +页面的APP应用
  6. 修手机时创意被剽窃,男子向苹果索赔7万亿!是认真的吗?
  7. 单例模式 - 双锁机制
  8. OpenSift源代码编译过程记录
  9. win7桌面快捷方式图标修复方法
  10. 数列求和再求极限问题
  11. 计算机教室的英文音标,小学四年级英语单词(带音标).doc
  12. 夜的钢琴曲五—吉他指弹
  13. 软件测试中的心理学效应
  14. java特种兵读书笔记(3-5)——java程序员的OS之OOM
  15. 中国各地旅游五十项注意,请大家谨记
  16. 软件工程师学习硬件原理图--第一讲看懂GPIO和门电路(弱智学前班儿童系列)
  17. AlphaStar 实战技巧分析
  18. 做一个校园跑腿小程序需要多少成本?
  19. Mac如何创建自签名证书?Mac创建自签名证书图文教程
  20. 中国不承认国际驾驶证

热门文章

  1. Typescript中class的extends码源分析
  2. 云服务器配置出现的问题 2
  3. 删掉一个文件夹相对于另一个文件夹多出的文件
  4. [PY3]——字符串的分割、匹配、搜索方法总结
  5. 【转】ubuntu 11.10(32位系统)下编译android源码
  6. java 中类的加载顺序
  7. H264解码器源码(Android 1.6 版和QT都可以调用)
  8. Dockerfile 指令详解1
  9. 10.18.2 linux文件压缩与打包
  10. python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录