二维树状数组 BZOJ 1452 [JSOI2009]Count
2016-05-17 21:46
471 查看
题目链接
裸二维树状数组
裸二维树状数组
#include <bits/stdc++.h> const int N = 305; struct BIT_2D { int c[105] , 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 ; 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; }
相关文章推荐
- 用ListView来显示解析jsonstr数组后的数据
- js上拉加载、下拉刷新的插件
- javascript初学者笔记——关于innerHTML、innerText、outerHTML和outerText的区别
- 用jspf文件做jsp页面的通用页面头
- [Javascript] Logging Pretty-Printing Tabular Data to the Console
- Effective JavaScript :第四章
- Jsp小案例——输出当前系统时间
- javascript第九天
- jsp:useBean标准动作
- bzoj1149/2895 [JSOI2009]球队收益
- js设置radio选中 【转】
- JavaScript面向对象
- javascript需要知道的1
- 解析js中的call
- javascript的几种继承方式
- 表单验证插件Validate.js的使用
- Javascript 面向对象编程(一):封装
- jsp一句话
- Javascript面向对象编程(二):构造函数的继承
- js中的this关键字详解