POJ2155Matrix(二维树状数组)
来源:互联网 发布:照片编辑软件下载 编辑:程序博客网 时间:2024/06/05 06:28
给出矩阵左上角和右下角坐标,矩阵里的元素 1变0 ,0 变1,然后给出询问,问某个点是多少
注意树状数组是向上更新!!
比如:
12 2C 1 1 4 4Q 1 1这样一组数据
那么矩阵里面是这样的
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn = 1005;int C[maxn][maxn];int lowbit(int lo){ return lo & (-lo);}void modify(int i, int j, int value){ for(int x = i; x < maxn; x += lowbit(x)) { for(int y = j; y < maxn; y += lowbit(y)) { C[x][y] += value; } }}int getsum(int i, int j){ int sum = 0; for(int x = i; x > 0; x -= lowbit(x)) { for(int y = j; y > 0; y -= lowbit(y)) { sum += C[x][y]; } } return sum;}int main(){ int T, n, que, x1, y1, x2, y2; cin >> T; char op[10]; while(T--) { scanf("%d%d", &n, &que); memset(C, 0, sizeof(C)); for(int i = 1; i <= que; i++) { scanf("%s", op); //cout << op[0] << endl; if(op[0] == 'C') { scanf("%d%d%d%d", &x1, &y1, &x2, &y2); x1++;y1++;x2++;y2++; modify(x2, y2, 1); modify(x1-1, y1-1, 1); modify(x2, y1-1, 1); modify(x1-1, y2, 1); } else { scanf("%d%d", &x1, &y1); int ans = getsum(x1, y1) % 2; cout << ans << endl; } } printf("\n"); } return 0;}
0 0
- POJ2155Matrix(二维树状数组)
- poj2155Matrix【二位树状数组】
- 树状数组(二维)
- poj1195(二维树状数组)
- poj2155(二维树状数组)
- poj1195 (二维树状数组)
- HLJUOJ1118(二维树状数组)
- POJ_1195 (二维树状数组)
- Poj1195(二维树状数组)
- hdu5571Triple(二维树状数组)
- 1016(二维树状数组)
- 树状数组模板+poj1195(二维树状数组)
- 树状数组专题--Problem B(二维树状数组)
- 树状数组升级版(二维树状数组)
- poj 2155 Matrix(二维树状数组)
- poj 2155(二维树状数组)
- hdu 1892(二维树状数组模板)
- poj 2155 (二维树状数组)
- 环信即时聊天步骤
- 安卓中点击某个按钮跳转到指定网页
- leetcode_231. Power of Two 判断2的幂
- 洛谷 P1119 灾后重建
- Android开发技术
- POJ2155Matrix(二维树状数组)
- 感谢C语言吧吧友奉上的C语言小程序练习---初学者练手
- RecyclerView使用
- 通过一个有趣的例子说明线程的工作机制
- AwesomePlayer 分析
- jmeter分布式部署
- SystemServer进程启动流程
- ACCPHTMLS1第八章上机1
- 前端面试宝典(二)