题目链接

裸二维树状数组

#include <bits/stdc++.h>

const int N = 305;
struct BIT_2D {
int c[105][N][N], n, m;
void init(int n, int m) {
memset (c, 0, sizeof (c));
this->n = n;
this->m = m;
}
void updata(int k, int x, int y, int z) {
for (int i=x; i<=n; i+=i&(-i)) {
for (int j=y; j<=m; j+=j&(-j)) {
c[k][i][j] += z;
}
}
}
int query(int k, int x, int y) {
int ret = 0;
for (int i=x; i; i-=i&(-i)) {
for (int j=y; j; j-=j&(-j)) {
ret += c[k][i][j];
}
}
return ret;
}
int count(int x1, int x2, int y1, int y2, int a) {
return query (a, x2, y2) - query (a, x2, y1-1) - query (a, x1-1, y2) + query (a, x1-1, y1-1);
}
}; int a[N][N];
BIT_2D bit; int read() {
int ret = 0, f = 1;
char ch = getchar ();
while (ch < '0' || ch > '9') {
if (ch == '-') {
f = -1;
}
ch = getchar ();
}
while (ch >= '0' && ch <= '9') {
ret = ret * 10 + ch - '0';
ch = getchar ();
}
return ret * f;
} int main() {
int n, m;
while (scanf ("%d%d", &n, &m) == 2) {
bit.init (n, m);
for (int i=1; i<=n; ++i) {
for (int j=1; j<=m; ++j) {
//scanf ("%d", &a[i][j]);
a[i][j] = read ();
bit.updata (a[i][j], i, j, 1);
}
}
int q;
scanf ("%d", &q);
while (q--) {
int op, x1, x2, y1, y2, x;
scanf ("%d", &op);
if (op == 1) {
//scanf ("%d%d%d", &x1, &y1, &x);
x1 = read (); y1 = read (); x = read ();
bit.updata (a[x1][y1], x1, y1, -1);
a[x1][y1] = x;
bit.updata (a[x1][y1], x1, y1, 1);
} else {
//scanf ("%d%d%d%d%d", &x1, &x2, &y1, &y2, &x);
x1 = read (); x2 = read (); y1 = read (); y2 = read (); x = read ();
printf ("%d\n", bit.count (x1, x2, y1, y2, x));
}
}
}
return 0;
}

  

最新文章

  1. 解决MyEclipe出现An error has occurred,See error log for more details的错误
  2. Hadoop分布式系统的安装部署
  3. jmeter仅一次控制器
  4. html 涂改图片功能实现
  5. html字符字体转换
  6. 仿Material UI框架的动画特效
  7. Unable to load dll 的解决方案
  8. java集合框架1
  9. 分布式PostGIS系列【1】— 概述
  10. poj 3250 Bad Hair Day【栈】
  11. Makefile的简单例子
  12. WCF - 契约
  13. Android ViewDragHelper完全解析 自定义ViewGroup神器
  14. kubernetes dashboard backend源码剖析
  15. Spring Boot整合Mybatis并完成CRUD操作
  16. C++输出
  17. 关于IDE的选择
  18. 玩转X-CTR100 l STM32F4 l DAC数字模拟转换
  19. (转)Integrating Intel&#174; Media SDK with FFmpeg for mux/demuxing and audio encode/decode usages 1
  20. h5页面弹窗滚动穿透的思考

热门文章

  1. Google Maps API V3 之绘图库 信息窗口
  2. memcached的key,value,过期时间的限制
  3. css3的基本样式
  4. php万年历
  5. H5案例分享:移动端touch事件判断滑屏手势的方向
  6. 如何查看oracle 的package源码
  7. webApi 数据绑定 获取
  8. TouchSlide1.1,手机上的幻灯片
  9. 【Network】UDP 大包怎么发? MTU怎么设置?
  10. [转]MyEclipse 里查看jar文件源码