POJ2155 Matrix
原题传送:http://poj.org/problem?id=2155
楼教神题,二维树状数组。
弄懂一维树状数组,二维的也不难懂。可以参考NOCOW。
需要注意的是,修改的四个点分别是(x1, y1), (x2+1, y1), (x1, y2+1), (x2+1, y2+1),而不是(x1, y1), (x2, y1), (x1, y2), (x2, y2),因为如果是后者的话,(x2, y2)会被4次覆盖(也就是点(x2, y2)不会被改变)。
1 #include <stdio.h> 2 #include <string.h> 3 #define N 1001 4 typedef long long LL; 5 6 LL c[N][N]; 7 8 LL lowbit(LL x) 9 { 10 return x & (-x); 11 } 12 13 void modify(int x, int y) 14 { 15 for(int i = x; i < N; i += lowbit(i)) 16 for(int j = y; j < N; j += lowbit(j)) 17 c[i][j] ++; 18 return ; 19 } 20 21 LL query(int x, int y) 22 { 23 LL ans = 0; 24 for(int i = x; i > 0; i -= lowbit(i)) 25 for(int j = y; j > 0; j -= lowbit(j)) 26 ans += c[i][j]; 27 return ans; 28 } 29 30 int main() 31 { 32 int cas, n, tt, t, x1, y1, x2, y2; 33 char op[3]; 34 scanf("%d", &tt); 35 for(cas = 1; cas <= tt; cas ++) 36 { 37 if(cas != 1) 38 putchar('\n'); 39 memset(c, 0, sizeof c); 40 scanf("%d%d", &n, &t); 41 while(t --) 42 { 43 scanf("%s", op); 44 if(op[0] == 'C') 45 { 46 scanf("%d%d%d%d", &x1, &y1, &x2, &y2); 47 modify(x1, y1); 48 modify(x2 + 1, y1); 49 modify(x1, y2 + 1); 50 modify(x2 + 1, y2 + 1); 51 } 52 else if(op[0] == 'Q') 53 { 54 scanf("%d%d", &x1, &y1); 55 printf("%I64d\n", query(x1, y1) & 1); 56 } 57 } 58 } 59 return 0; 60 }
转载于:https://www.cnblogs.com/huangfeihome/archive/2012/10/18/2729502.html
POJ2155 Matrix相关推荐
- POJ2155 - Matrix(二维树状数组)
POJ2155 - Matrix 文章目录 题目 题解: 代码 题目 给你一个二维矩阵,初始化为0,然后可以进行两次操作: C:x,y,x1,y2 对该小矩阵内的数进行取反 Q:查询某个点是0还是1 ...
- POJ-2155 Matrix 二维线段树 | 树状数组
题目链接:http://poj.org/problem?id=2155 比较典型的二维线段树题目,直接永久更新即可,在询问的时候,要询问每个x区间的子树,复杂度O(log(n)^2). 也可以用树状数 ...
- [POJ2155] Matrix(二维线段树,树套树)
题目链接:http://poj.org/problem?id=2155 题意:给一个01矩阵,两个操作,翻转:子矩阵里每一个数都由0变1,1变0. 查询:查询某一点是0还是1. 一直以为二维线段树就是 ...
- POJ2155 Matrix二维线段树经典题
题目链接 二维树状数组 1 #include<iostream> 2 #include<math.h> 3 #include<algorithm> 4 #inclu ...
- POJ2155 Matrix 二维线段树
关键词:线段树 二维线段树维护一个 维护一个X线段的线段树,每个X节点维护一个 维护一个Y线段的线段树. 注意,以下代码没有PushDownX.因为如果要这么做,PushDownX时,由于当前X节点的 ...
- 基础省选+NOI-第2部分 数据结构进阶(II)
1.量产数据结构 [暖*墟] #洛谷省选网课# 7.30量产数据结构 - 花神&缘浅flora - 博客园 [暖*墟] #洛谷省选网课# 7.30量产数据结构_flora715的博客-CSDN ...
- ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》
罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...
- ICPC程序设计题解书籍系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)
白书<挑战程序设计竞赛>(第2版)题目一览 白书:秋田拓哉:<挑战程序设计竞赛>(第2版) 第1章 蓄势待发--准备篇(例题) POJ1852 UVa10714 ZOJ2376 ...
- Android 自定义View ——Matrix (矩阵)
Matrix的作用: Matrix类包含一个3x3矩阵,用于转换坐标 Matrix (矩阵) 的原理很遗憾自己目前也是含糊的很,这里就不说了,记录自己在项目使用的方法, 这里就简单的记录下Matrix ...
- Codeforces 903F Clear The Matrix(状态压缩DP)
题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...
最新文章
- fushioncharts破解
- 【深度学习入门到精通系列】留一交叉验证法Python实现(看不懂你来打我~!)
- 怎样保证客户端和服务器端数据的一致性(数据的同步)
- C/C++在Android开发中的应用
- 前沪江高级架构师学习笔记分享:分布式框架设计与实现
- ASP.NET 2.0与SQL Express 2005在迁移到Windows 2003时发生数据库为只读的错误
- webpack打开项目命令_webpack打包好的页面在项目中怎么运行?
- Asp.net 调用sqlserver存储过程参数传中文乱码!
- 我可以不做但我不可以不会
- spring-第五篇之spring容器中的bean
- Keli μVision中 STR指令写入内存无效
- android 微信6.1版本,微信6.1老版本-微信旧版6.1安卓版下载-Appfound
- 公交非接触IC卡读写器的应用设计
- 【机器学习】(5.4)聚类--密度聚类(DBSCAN、MDCA)
- nssa和stub_Stub区域和NSSA区域比较
- 视频剪辑计算机配置要求,对于视频剪辑工作,需要什么样的电脑配置才满足要求...
- Unity3D关于蓄力跳跃
- Proximity sensor---Px318J
- linux查看串口信息tty*
- 腾讯位置服务---->(小程序简单使用+显示附近WC步行路线)