POJ 2155 Matrix(二维树状数组模板)
2016-05-20 12:29
555 查看
题目链接:http://poj.org/problem?id=2155
题意:二维区间查询,单点更新。
题解:二维树状数组。
代码:
题意:二维区间查询,单点更新。
题解:二维树状数组。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAX=1000+10; int sum[MAX][MAX]; int N; int lowbit(int x) { return x&(-x); } void update(int x,int y) { for(int i=x;i<=N;i+=lowbit(i)) { for(int j=y;j<=N;j+=lowbit(j)) { sum[i][j]++; } } } int query(int x,int y) { int s=0; for(int i=x;i>0;i-=lowbit(i)) { for(int j=y;j>0;j-=lowbit(j)) { s+=sum[i][j]; } } return s; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T; scanf("%d",&T); while(T--) { memset(sum,0,sizeof(sum)); int t; scanf("%d%d",&N,&t); char C; while(t--) { getchar(); scanf("%c",&C); int a,b,c,d; if(C=='Q') { scanf("%d%d",&a,&b); printf("%d\n",query(a,b)%2); } if(C=='C') { scanf("%d%d%d%d",&a,&b,&c,&d); update(a,b); update(c+1,b); update(a,d+1); update(c+1,d+1); } } putchar(10); } return 0; }
相关文章推荐
- 7.spark Streaming 技术内幕 : 从DSteam到RDD全过程解析
- 12 种编程语言的起源故事
- C#技术开发
- 成员变量修饰词的作用
- 2016年,谁是最受欢迎的 Java EE 服务器?
- 面向对象的三大特性
- 2016年,谁是最受欢迎的 Java EE 服务器?
- Linux下解压,压缩JAR包的方法
- 剑指Offer----面试题六:重建二叉树
- 悬浮的Activity
- 在Laravel框架里实现发送邮件实例(邮箱验证)
- 对+load方法的理解
- 搭建Android 5.0开发环境
- socket编程中容易出现的5个错误
- 【数据结构】大量数据(20万)的快速排序的递归与非递归算法、三数取中思想
- BZOJ_1901_&_ZJU_2112_Dynamic_Rankings_(主席树+树状数组/线段树+(Treap/Splay))
- Jsoup实现Iteye自动登录
- 梦幻藏宝阁第二次验证。。解决方案
- 盗窃、养狗与概率的故事
- Yii框架组件和事件行为管理详解