POJ 2155 Matrix
来源:互联网 发布:linux查看所有用户权限 编辑:程序博客网 时间:2024/06/04 18:31
题目链接:http://poj.org/problem?id=2155
题意:给一个二维矩阵,每次一个操作,将一个矩形范围内的值改变一次,或者查询一个点的值。
思路:二维树状数组模板题。
树状数组专题链接:http://blog.csdn.net/chy20142109/article/details/50673749
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;#define rep(i,j,k) for(int i = j;i<=k;i++)#define Rrep(i,j,k) for(int i = j;i>=k;i--)#define Clean(x,y) memset(x,y,sizeof(x))const int maxn = 1009;int T,X;int n;int sum[maxn][maxn];int lowbit(int x){ return x&(-x);}void add(int x,int y){ while( x <= n ) { int ty = y; while( ty <= n ) { sum[x][ty]+=1; ty+=lowbit(ty); } x+=lowbit(x); }}int query(int x,int y){ int ans = 0; while( x ) { int ty = y; while(ty) { ans+=sum[x][ty]; ty-=lowbit(ty); } x-=lowbit(x); } return ans;}int main(){ cin>>X; while(X--) { int x1,x2,y1,y2; char op; cin>>n>>T; Clean(sum,0); while(T--) { getchar(); op = getchar(); scanf("%d%d",&x1,&y1); if ( op == 'C' ) { scanf("%d%d",&x2,&y2); add(x1,y1); add(x2+1,y1); add(x1,y2+1); add(x2+1,y2+1); } else printf( "%d\n", ( query(x1,y1) )&1 ); } if ( X ) puts(""); } return 0;}
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
- POJ 2155 Matrix
- poj 2155 Matrix
- POJ 2155 Matrix
- POJ 2155 Matrix
- poj 2155 Matrix
- Leetcode Problem 2: Add Two numbers
- 开通个人博客,谢谢支持!
- Mysql之Mysql自动安装(yum)篇
- 二叉树操作(插入、删除、遍历(递归与非递归))
- recycleView滑动删除,拖动排序
- POJ 2155 Matrix
- 《控制论导论》读书笔记 (一)
- JAXWS 开发webService ,使用spring注入service类时,无法注入,报空指针
- MapDesign快速指引
- C++之引用
- STM32软件仿真问题
- error:Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and op
- HIVE 0.14 Cost Based Optimizer (CBO) Technical Overview
- android的listView如何添加一个ViewPager