POJ 2155 Matrix(二维树状数组)
来源:互联网 发布:asp考试系统源码 编辑:程序博客网 时间:2024/05/17 00:11
题目链接:
http://poj.org/problem?id=2155
题目大意:
给一个n*n的矩阵,有k个询问。询问分更新和询问操作。
更新操作是对某个小的矩阵进行变换,里面的数(0变1,1变0)。
询问操作是单点询问,问当前这个数是0 还是1。
范围:
n<=1000,k<=5000.
思路:
二维树状数组。
二维的树状数组其实就是在一维树状数组的基础上面加了一维。
c[i][j]就代表了从a[1][1]到从c[i][j]的总和,方式和一维树状数组是一样的。
那么这道题目就是区间更新,单点查询。
区间更新时,我们可以通过update(x1,y1),update(x2+1,y2+1),update(x1,y2+1),update(x2+1,y1)。然后查询的时候就可以看这个点累加了几次,如果是偶数次就是0,否则就是1。
代码:
#include<stdio.h>#include<string.h>int c[1005][1005],n;int lowbit(int x){return x&(-x);}void update(int x,int y,int z){ int i, j;for( i=x;i<=n;i+=lowbit(i))for( j=y;j<=n;j+=lowbit(j)){c[i][j]+=z;}}int query(int x,int y){int ans=0,i,j;for(i=x;i>0;i-=lowbit(i))for(j=y;j>0;j-=lowbit(j)){ans+=c[i][j];}return ans;}int main(){ char s[3]; int T,X,i,j,k,x1,x2,y1,y2; scanf("%d",&T); while(T--) { memset(c,0,sizeof(c)); scanf("%d%d",&n,&X); while(X--) { scanf("%s%d%d",s,&x1,&y1); if(s[0]=='C'){ scanf("%d%d",&x2,&y2); update(x1,y1,1); update(x2+1,y2+1,1); update(x1,y2+1,1); update(x2+1,y1,1); } else { int xx=query(x1,y1); if(xx%2)printf("1\n"); else printf("0\n"); } } printf("\n"); }}
0 0
- 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(二维树状数组)
- Matrix - POJ 2155 二维树状数组
- POJ 2155 Matrix 二维树状数组
- POJ 2155 Matrix 【二维树状数组】
- POJ 2155 Matrix (二维树状数组)
- poj 2155 Matrix (二维树状数组)
- 快速地搜索手机文件引擎(JavaIO的应用)
- RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Solaris) (文档 ID 1526517.1)
- 模板与泛型编程1
- 面试常客Handler详细解析(handler基础)(一)
- 2016春季训练——哈希
- POJ 2155 Matrix(二维树状数组)
- 数的读法
- Mount Options for Oracle files when used with NFS on NAS devices (文档 ID 359515.1)
- 自定义View中onMeasure在wrap_content时的处理
- Windows下Eclipse和PyDev搭建Python开发环境
- MFC 非模态对话框一闪而过
- RAC 和 Oracle Clusterware 最佳实践和初学者指南(平台无关部分) (文档 ID 1526083.1)
- 操作系统
- 继承和构造器相关知识的个人理解