poj2155 Matrix 【二维树状数组】
2014-06-26 17:42
204 查看
有工具在手,这题就是一个模板题,就是有点不清楚,最后问的是单个元素的值,它怎么sum求出来的
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> using namespace std; #define maxn 1005 int c[maxn][maxn]; int Row, Col; inline int Lowbit(const int &x) { return x & (-x); } int Sum(int i, int j) { int tempj, sum = 0; while (i > 0) { tempj = j; while (tempj > 0) { sum += c[i][tempj]; tempj -= Lowbit(tempj); } i -= Lowbit(i); } return sum; } void Update(int i, int j, int num) { int tempj; while (i <= Row) { tempj = j; while (tempj <= Col) { c[i][tempj] += num; tempj += Lowbit(tempj); } i += Lowbit(i); } } int main() { #ifndef ONLINE_JUDGE freopen("G:/1.txt","r",stdin); freopen("G:/2.txt","w",stdout); #endif int T; scanf("%d",&T); while(T--) { memset(c,0,sizeof(c)); int N,Q;scanf("%d%d",&N,&Q);getchar(); Row=N;Col=N; for(int i=1;i<=Q;i++) { char ques;int a,b,c,d; scanf("%c ",&ques);//getchar(); if(ques=='C') { scanf("%d%d%d%d",&a,&b,&c,&d);getchar(); c++;d++; Update(a,b,1); Update(c,d,1); Update(c,b,-1); Update(a,d,-1); } else if(ques=='Q') { scanf("%d%d",&a,&b);getchar(); printf("%d\n",1&Sum(a,b)); } } printf("\n"); } }
相关文章推荐
- POJ 2155 Matrix (二维树状数组,区间更新,点查找)
- POJ-2155 Matrix 二维树状数组
- POJ 2155 Matrix【二维树状数组】POJ 2155【
- POJ2155 Matrix 二维树状数组的应用
- poj2155 Matrix 二维树状数组
- poj 2155 Matrix(二维树状数组,好题)中等难度题目,更新区域,查询单点
- poj 2155 matrix 二维树状数组反应用
- poj-2155 matrix :二维树状数组
- POJ 2155 Matrix 【二维树状数组】
- poj 2155 Matrix 二维树状数组 (经典)
- poj 2155 Matrix 二维树状数组
- POJ 2155 Matrix ( 二维树状数组 ) || HDU 3584 Cube ( 三维树状数组 )
- Matrix - POJ 2155 二维树状数组
- POJ 2155 - Matrix 二维树状数组..区间更新..单点查询
- poj 2155- Matrix (树状数组,二维,更新区间,查询单点)
- POJ 2155 Matrix (二维树状数组,区间更新,点查找)
- poj----2155 Matrix(二维树状数组第二类)
- POJ 2155——Matrix(树套树,二维树状数组,二维线段树)
- 二维树状数组 —— POJ 2155 Matrix
- 二维树状数组-POJ-2155-Matrix