题意:给出两种操作,C是给出一个矩形的左上角和左下角的下标,把这个矩形里面的0变成1,1变成0,Q是询问某个点的值

看这篇论文讲得很清楚

http://wenku.baidu.com/view/1e51750abb68a98271fefaa8

自己看的时候,把每个点对应覆盖哪些区域画出来,再结合论文里面的,好理解一些

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include <cmath>
  5. #include<stack>
  6. #include<vector>
  7. #include<map>
  8. #include<set>
  9. #include<queue>
  10. #include<algorithm>
  11. using namespace std;
  12.  
  13. typedef long long LL;
  14. const int INF = (<<)-;
  15. const int mod=;
  16. const int maxn=;
  17.  
  18. int n;
  19. int c[maxn][maxn];
  20.  
  21. int lowbit(int x){ return x & (-x);}
  22.  
  23. int sum(int x,int y){
  24. int ret=,y1;
  25. while(x>){
  26. y1=y;
  27. while(y1>){
  28. ret+=c[x][y1];y1-=lowbit(y1);
  29. }
  30. x-=lowbit(x);
  31. }
  32. return ret;
  33. }
  34.  
  35. void add(int x,int y,int d){
  36. int y1;
  37. while(x<=n){
  38. y1=y;
  39. while(y1<=n){
  40. c[x][y1]+=d;y1+=lowbit(y1);
  41. }
  42. x+=lowbit(x);
  43. }
  44. }
  45.  
  46. int main(){
  47. int T;
  48. scanf("%d",&T);
  49. while(T--){
  50. int m;
  51. memset(c,,sizeof(c));
  52. scanf("%d%d%*c",&n,&m);
  53. while(m--){
  54. char ch;
  55. scanf("%c",&ch);
  56. if(ch == 'C'){
  57. int x1,y1,x2,y2;
  58. scanf("%d%d",&x1,&y1);
  59. scanf("%d%d%*c",&x2,&y2);
  60. add(x1,y1,);
  61. add(x1,y2+,-);
  62. add(x2+,y1,-);
  63. add(x2+,y2+,);
  64. }
  65. else {
  66. int l,r;
  67. scanf("%d%d%*c",&l,&r);
  68. int ans;
  69. ans=sum(l,r);
  70. printf("%d\n",ans%);
  71. }
  72. }
  73. if(T>=) puts("");
  74. }
  75. return ;
  76. }

POJ 2155 Matrix【 二维树状数组 】的更多相关文章

  1. POJ 2155 Matrix(二维树状数组,绝对具体)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 20599   Accepted: 7673 Descripti ...

  2. poj 2155 Matrix (二维树状数组)

    题意:给你一个矩阵开始全是0,然后给你两种指令,第一种:C x1,y1,x2,y2 就是将左上角为x1,y1,右下角为x2,y2,的这个矩阵内的数字全部翻转,0变1,1变0 第二种:Q x1 y1,输 ...

  3. POJ 2155:Matrix 二维树状数组

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 21757   Accepted: 8141 Descripti ...

  4. [poj2155]Matrix(二维树状数组)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 25004   Accepted: 9261 Descripti ...

  5. 【poj2155】Matrix(二维树状数组区间更新+单点查询)

    Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...

  6. POJ 2029 (二维树状数组)题解

    思路: 大力出奇迹,先用二维树状数组存,然后暴力枚举 算某个矩形区域的值的示意图如下,代码在下面慢慢找... 代码: #include<cstdio> #include<map> ...

  7. poj----2155 Matrix(二维树状数组第二类)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 16950   Accepted: 6369 Descripti ...

  8. poj 2155 B - Matrix 二维树状数组

    #include<iostream> #include<string> #include<string.h> #include<cstdio> usin ...

  9. POJ2155:Matrix(二维树状数组,经典)

    Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...

  10. Matrix 二维树状数组的第二类应用

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17976   Accepted: 6737 Descripti ...

随机推荐

  1. sql server 随机生成布尔值

    ) AS BIT) 或者 )

  2. Hua Wei 机试题目三---2014

    一.根据对应规则进行翻译输出 描述:已知有如下的对应规则: ,则输入任意个正整数,输出经过规则翻译以后对应的结果. 例如:输入:1234:输出bcde. 题目很简单,我觉得需要注意的问题就是对于大整数 ...

  3. 微信小程序分享朋友圈的实现思路与解决办法

    实现思路 那么既然小程序没有分享到朋友圈的api,我们怎么实现分享到朋友圈呢,下面我介绍一下实现思路. 既然没有捷径,那就走复杂一点的路线,那就是需要用户手动分享到朋友圈,问题又来了,用户手动分享的话 ...

  4. [转]opencv学习资料

    转自:http://blog.csdn.net/poem_qianmo/article/details/20537737 1:Mat imread(const string& filename ...

  5. CentOS 6.5下部署日志服务器 Rsyslog+LogAnalyzer+MySQL

    简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所 ...

  6. jq——css类

    1  addClass(classname) 添加类 <script type="text/javascript"> $("input").clic ...

  7. web 安全主题

  8. JS数组中的indexOf方法

    前言 这两天在家中帮朋友做项目,项目中使用了数组的indexOf 方法,找到了一篇文章,感觉非常不错,顺便整理下以防链接丢失. 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别 ...

  9. 关于fromkeys的用法

    分享一个小知识点: 1. Python 中关于dict的fromkeys方法: 1. fromkeys是用于重构字典 2. 至少传一个参数,第一个参数为新建dict的key,如果第一个参数为字典,那么 ...

  10. java EE使用response返回中文时,出现乱码问题

    response.setHeader("content-type", "text/html;charset=UTF-8");