[poj2155]Matrix(二维树状数组)
Matrix
| Time Limit: 3000MS | Memory Limit: 65536K | |
| Total Submissions: 25004 | Accepted: 9261 |
Description
We can change the matrix in the following way. Given a rectangle whose upper-left corner is (x1, y1) and lower-right corner is (x2, y2), we change all the elements in the rectangle by using "not" operation (if it is a '0' then change it into '1' otherwise change it into '0'). To maintain the information of the matrix, you are asked to write a program to receive and execute two kinds of instructions.
1. C x1 y1 x2 y2 (1 <= x1 <= x2 <= n, 1 <= y1 <= y2 <= n) changes the matrix by using the rectangle whose upper-left corner is (x1, y1) and lower-right corner is (x2, y2).
2. Q x y (1 <= x, y <= n) querys A[x, y].
Input
The first line of each block contains two numbers N and T (2 <= N <= 1000, 1 <= T <= 50000) representing the size of the matrix and the number of the instructions. The following T lines each represents an instruction having the format "Q x y" or "C x1 y1 x2 y2", which has been described above.
Output
There is a blank line between every two continuous test cases.
Sample Input
1
2 10
C 2 1 2 2
Q 2 2
C 2 1 2 1
Q 1 1
C 1 1 2 1
C 1 2 1 2
C 1 1 2 2
Q 1 1
C 1 1 2 1
Q 2 1
Sample Output
1
0
0
1
Source
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int bit[][];
int n;
int lb(int x){
return x&(-x);
}
int q(int x,int y){
int ans=;
while(x){
int i=y;
while(i){
ans+=bit[x][i];
i-=lb(i);
}
x-=lb(x);
}
return ans%;
}
int c(int x,int y){
while(x<=n+){
int i=y;
while(i<=n+){
bit[x][i]++;
i+=lb(i);
}
x+=lb(x);
}
return ;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int t;
scanf("%d %d",&n,&t);
memset(bit,,sizeof(bit));
for(int i=;i<=t;i++){
char op=getchar();
while(op!='C'&&op!='Q')op=getchar();
switch(op){
case 'C':
int x1,y1,x2,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
c(x1,y1);
c(x2+,y1);
c(x1,y2+);
c(x2+,y2+);
break;
case 'Q':
int x,y;
scanf("%d %d",&x,&y);
printf("%d\n",q(x,y));
break;
default:
break;
}
}
puts("");
}
return ;
}
[poj2155]Matrix(二维树状数组)的更多相关文章
- poj----2155 Matrix(二维树状数组第二类)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16950 Accepted: 6369 Descripti ...
- POJ2155:Matrix(二维树状数组,经典)
Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...
- 【poj2155】Matrix(二维树状数组区间更新+单点查询)
Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...
- poj2155一个二维树状数组
...
- POJ 2155 Matrix(二维树状数组,绝对具体)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 20599 Accepted: 7673 Descripti ...
- POJ 2155:Matrix 二维树状数组
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 21757 Accepted: 8141 Descripti ...
- poj 2155 Matrix (二维树状数组)
题意:给你一个矩阵开始全是0,然后给你两种指令,第一种:C x1,y1,x2,y2 就是将左上角为x1,y1,右下角为x2,y2,的这个矩阵内的数字全部翻转,0变1,1变0 第二种:Q x1 y1,输 ...
- POJ2155【二维树状数组,区间修改,点查询?】【又被输入输出坑】
这题反反复复,到现在才过. 这道题就是树状数组的逆用,用于修改区间内容,查询点的值. 如果单纯就这个奇偶数来判的话,似乎这个思路比较好理解. 看了一下国家集训队论文(囧),<关于0与1在信息学奥 ...
- Matrix 二维树状数组的第二类应用
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17976 Accepted: 6737 Descripti ...
随机推荐
- json.parse 与 json.stringfy
转自 :http://blog.csdn.net/wangxiaohu__/article/details/7254598 parse用于从一个字符串中解析出json对象,如 var str = '{ ...
- NEC学习 ---- 模块 -多行式面包屑导航
如上面形式面包屑的写法: HTML如下, <div class="m-crumb"> <ul class="f-cb"> <li& ...
- LR之Java Vuser
虽然LR对C有较好的支持,但有时使用Java Vuser会更方便,以下描述通过LR来编写Java脚本以及调用jar包的基本步骤. 1.安装配置java环境 LR的java vuser脚本的执行依赖于 ...
- Java集合框架使用总结
Java集合框架使用总结 前言:本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看JavaAPI文档. 一.概述数据结 ...
- ie下如果已经有缓存,load方法的效果就无法执行.的解决方法
<script type="text/javascript"> $(document).ready(function(){ $('img') ...
- zepto源码--核心方法5(文本操作)--学习笔记
涉及到文本内容的主要有三个函数:html, text, val. 我们已经见过多次,一个函数多种用途的情况,今天这三个函数也不例外,既可以获取内容,也可以设置内容.判断条件就是有没有传入参数,如果没有 ...
- word-break、word-wrap和其他文字属性
word-break: break-all; 控制是否断词.(粗暴方式断词)break-all,是断开单词.在单词到边界时,下个字母自动到下一行.主要解决了长串英文的问题. word-wrap: br ...
- 采用CSS3的动态元素(动画)设计div块的层级式展现
此练习作品是为学习HTML5+CSS3而设计的(如有不好请大家批评指教~~~). 操作:当页面加载时,点击网页中的绿色块(一层),则有其他几块(二层)从其中央出现并向外延伸并旋转,点击这几块中任意一个 ...
- http://www.cnblogs.com/ACMer/p/5170255.html
http://www.cnblogs.com/ACMer/p/5170255.html
- Netty5.x中新增和值得注意的点
最近事情多,OneCoder折腾了好几天,总算翻译完成了. 翻译自官方文档:http://netty.io/wiki/new-and-noteworthy-in-5.x.html 该文档会列出在N ...