POJ 2155 Matrix (二维树状数组+经典题)
2014-04-03 12:43
267 查看
好开森啊,一次就AC了
//500ms #include<iostream> #include<cstdio> #include<cstring> #define low(x) x&(-x); using namespace std; int c[1001][1001],n; void update(int x,int y,int val) { while(x<=n) { int y1=y; while(y1<=n) { c[x][y1]+=val; y1+=low(y1); } x+=low(x); } } int getsum(int x,int y) { int sum=0; while(x>0) { int y1=y; while(y1>0) { sum+=c[x][y1]; y1-=low(y1); } x-=low(x); } return sum; } int main() { int t,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(c,0,sizeof(c)); while(m--) { char p; cin>>p; if(p=='C') { int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(x1>x2)x1^=x2^=x1^=x2; if(y1>y2)y1^=y2^=y1^=y2; update(x1,y1,1); update(x1,y2+1,-1); update(x2+1,y1,-1); update(x2+1,y2+1,1); } else{ int x,y; scanf("%d%d",&x,&y); printf("%d\n",getsum(x,y)%2); } getchar(); } if(t>0)printf("\n"); } return 0; }
相关文章推荐
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj2155 Matrix(经典二维树状数组)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- poj 2155 Matrix(二维树状数组)(经典)
- (POJ 2155)Matrix (复习必看题)经典二维树状数组题目 + 树状数组的论文讲解
- POJ 2155 Matrix(二维树状数组)
- POJ 2155 Matrix(二维树状数组)
- POJ 题目2155 Matrix(二维树状数组)
- POJ 2155 Matrix(二维树状数组)