poj 2155(树状数组)
来源:互联网 发布:wps办公表格软件 编辑:程序博客网 时间:2024/05/21 23:04
点击打开链接
题意:
给你一个n*n的矩阵(由0或1组成),有两种操作,C x1,y1,x2,y2将两个点组成的矩阵取反。Q x,y,求x,y这一点的值。。。
对于求一点的值,只需要求跟这一点有关的之后的位置翻转多少次就可以。。。
#include"stdio.h"#include"string.h"#define N 1005int C[N][N];int n;int bit(int x){return x&(-x);}int sum(int x,int y){int ans=0;for(int i=x;i>0;i-=bit(i)){for(int j=y;j>0;j-=bit(j))ans+=C[i][j];}return ans;}void update(int x,int y,int a){for(int i=x;i<=n;i+=bit(i)){for(int j=y;j<=n;j+=bit(j))C[i][j]=C[i][j]+a;}}int main(){int T;int m;int i;char s;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);memset(C,0,sizeof(C));for(i=0;i<m;i++){getchar();scanf("%c",&s);if(s=='C'){int x1,x2,y1,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);x2++;y2++;update(x2,y2,1);update(x1,y1,1);update(x2,y1,-1);update(x1,y2,-1);}else{int x,y;scanf("%d%d",&x,&y);printf("%d\n",1&sum(x,y));}}printf("\n");}return 0;}
- poj 2155(树状数组)
- POJ 2155 树状数组
- POJ 2155 树状数组
- poj 2155 Matrix(二维树状数组)
- poj 2155(二维树状数组)
- poj 2155 (二维树状数组)
- POJ 2155 Matrix (二维树状数组)
- POJ 2155 Matrix(二维树状数组)
- poj - 2155 - Matrix(树状数组)
- 【树状数组(二维)】poj 2155 Matrix
- POJ 2155 Matrix (二维树状数组)
- [poj 2155] Matrix(二维树状数组)
- POJ 2155 Matrix (二维树状数组)
- POJ-2155(二维树状数组)
- POJ 2155 Matrix(树状数组)
- Matrix.(POJ-2155)(树状数组)
- POJ 2155 Matrix(二维树状数组)
- poj 2155 Matrix(树状数组)
- vs2005 配置 DXSDK_march2008
- HDU-4631-Sad Love Story
- 一些jquery的实践
- 题目1520:树的子结构-九度
- - 敌兵布阵(hdu1165,裸的线段or树状数组)
- poj 2155(树状数组)
- Word快捷键
- MongoDB自学笔记9---4.1 插入文档
- 关于处理解决ListView 和 ScrollView 共存冲突的问题。
- OpenCV学习笔记: 快速入门例程
- python 魔法方法之:__getitem__ __setitem__ __delitem__ __len__
- Java语言实现简单FTP软件------>辅助功能模块FTP站点管理的实现(十二)
- [转] 用C语言实现Ping程序功能
- LinuxC之进程