码迷,mamicode.com
首页 > 其他好文 > 详细

Matrix

时间:2014-07-22 22:44:52      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   

poj2155:http://poj.org/problem?id=2155

题意:给你一个n*n的矩阵,初始的时候里面的元素都是0,然后又两种操作,一种是C x1 y1 x2 y2把(x1,y1)--(x2,y2)这个矩阵里面的元素取反。Q(x1,y1),查询元素(x1,y1)的值。

题解:二维树状数组的入门题。这里要向下更新,向上统计。更新的时候是^操作,统计的时候也是^操作。

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define  MAXN  1002
 6 using namespace std;
 7 int c[MAXN][MAXN];
 8 int n,m,t,cas;
 9 int lowbit(int x){
10    return x&(-x);
11 }
12 void add(int x,int y){
13     for(int i=x;i>=1;i-=lowbit(i)){
14         for(int j=y;j>=1;j-=lowbit(j))
15             c[i][j]=c[i][j]^1;
16     }
17 }
18 int getsum(int x,int y){
19     int ans=0;
20    for(int i=x;i<=n;i+=lowbit(i)){
21         for(int j=y;j<=m;j+=lowbit(j))
22             ans=ans^c[i][j];
23     }
24    return ans;
25 }
26 char temp[10];
27 int x1,y1,x2,y2;
28 int main(){
29     scanf("%d",&cas);
30     int tt=1;
31     while(cas--){
32       memset(c,0,sizeof(c));
33       scanf("%d%d",&n,&t);
34       m=n;
35       if(tt>1)printf("\n");
36       tt=2;
37       for(int i=1;i<=t;i++){
38         scanf("%s%d%d",temp,&x1,&y1);
39         if(temp[0]==C){
40             scanf("%d%d",&x2,&y2);
41             add(x2,y2);
42             add(x2,y1-1);
43             add(x1-1,y2);
44             add(x1-1,y1-1);
45         }
46         else{
47             printf("%d\n",getsum(x1,y1));
48         }
49       }
50     }
51 }
View Code

Matrix,布布扣,bubuko.com

Matrix

标签:style   blog   http   color   os   io   

原文地址:http://www.cnblogs.com/chujian123/p/3861050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!