题目链接


题意:给一个平面,有两个操作

  • 0 x y 在(x,y)处放置一个点
  • 1 x1 y1 x2 y2 查询左下角为(x1,y1),右上角为(x2,y2)的矩形区域包含多少个点(包括边界)

使用二维树状数组,矩形面积相减得到目标区域的和
二维数组模板题

"math.h" 中包含了对变量 x1,y1 的定义

题意中的位置是0~1000


#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <stack>
#include <string>
//#include <math.h>
#include <bitset>
#include <ctype.h>
using namespace std;
typedef pair<int,int> P;
typedef long long LL;
const int INF = 0x3f3f3f3f;
//const double PI = acos(-1.0);
const double eps = 1e-9;
const int N = 1200 + 5;
const int mod = 1e9 + 7;
int t, kase = 0;
int c[N][N];
int n;
void init()
{memset(c, 0, sizeof(c));
}
inline int lowbit(int i)
{return i&(-i);
}
void add(int x, int y, int val)
{for(int i = x; i <= n; i += lowbit(i)){for(int j = y; j <= n; j += lowbit(j)){c[i][j] += val;}}
}
int sum(int x, int y)
{int ans = 0;for(int i = x; i > 0; i -= lowbit(i))for(int j = y; j > 0; j -= lowbit(j))ans += c[i][j];return ans;
}
int query(int x1, int y1, int x2, int y2)
{return sum(x2,y2) - sum(x2, y1-1) - sum(x1-1, y2) + sum(x1-1, y1-1);
}
int x1,x2,y1,y2,q,type;
int main()
{n = 1001;scanf("%d", &t);while(t--){memset(c, 0, sizeof(c));printf("Case %d:\n", ++kase);scanf("%d", &q);while(q--){scanf("%d", &type);if(type == 0){scanf("%d%d", &x1,&y1);x1++,y1++;if(!query(x1,y1,x1,y1))add(x1,y1,1);}else{scanf("%d%d%d%d", &x1, &y1, &x2, &y2);x1++,y1++,x2++,y2++;printf("%d\n", query(x1,y1,x2,y2));}}}return 0;
}

转载于:https://www.cnblogs.com/Alruddy/p/7471108.html

LightOJ 1266 - Points in Rectangle 二维树状数组相关推荐

  1. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  2. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】

    树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...

  3. 【二维树状数组】See you~

    https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/F [题意] 给定一个矩阵,每个格子的初始值为1.现在可以对矩阵有四种操作: A ...

  4. POJ_1195 Mobile phones 【二维树状数组】

    题目链接:http://poj.org/problem?id=1195 纯纯的二维树状数组,不解释,仅仅须要注意一点,由于题目中的数组从0開始计算,所以维护的时候须要加1.由于树状数组的下标是不能为1 ...

  5. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分

    题目:https://www.luogu.org/problemnew/show/P1527 不难想到(?)可以用二维树状数组.但维护什么?怎么查询是难点. 因为求第k小,可以考虑记权值树状数组,把比 ...

  6. 二维树状数组 BZOJ 1452 [JSOI2009]Count

    题目链接 裸二维树状数组 #include <bits/stdc++.h>const int N = 305; struct BIT_2D {int c[105][N][N], n, m; ...

  7. HDU-4456 Crowd 二维树状数组+坐标转换

    题意:给定一个N*N的网格,现在M组操作,一种操作时改变网格上的某个单点的权值,另外一种操作是求到一点曼哈顿距离为小于等于k的所有的权值和,初始化网格所有点的权值为0. 解法:这题如果没有那些特定的条 ...

  8. hdu 1892二维树状数组

    这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...

  9. poj 1195(二维树状数组)

    解题思路:这是一道很裸的二维树状数组 AC: #include<stdio.h> #include<string.h> #define N 1100 int c[N][N],n ...

最新文章

  1. PIC模拟从入门到熟练系列之组会PPT20210913《Note of PIC》
  2. TCP 客户端和服务器端
  3. java mvc 导出excel_Java springMVC POI 导出 EXCEL
  4. 谷歌修复又一枚遭在野利用的 Chrome 0day
  5. 介绍数据库中的wal技术_门禁系统中RFID与ETC两种新兴技术介绍
  6. BOA软件服务的移植和BOA服务的配置
  7. pfSense多拨网速叠加教程
  8. Android高级UI开发(九)之侧滑菜单 --抽屉
  9. 什么是人工智能(AI)?人工智能又能为CRM带来什么?
  10. 独立站运营 | FaceBook营销神器——聊天机器人ManyChat
  11. 科普:飞针测试机探针分类概要
  12. 实现windows与ubuntu的之间的复制与粘贴
  13. 【数学】高昆轮高数下强化
  14. 2012年每周推荐阅读汇总
  15. mysql partition 语法,MySQL与瀚高数据库的范围分区的语法及实例(APP)
  16. Uboot SPL的Boot模式选择(从MMC切换到SPI启动)
  17. spring--ApplicationContextAware
  18. WindowsTool
  19. 乐信、趣店同源“异路”
  20. 学习记录(2018.7.18)

热门文章

  1. ad16不能去除铺铜_海水小讲堂006 铜离子的正确使用姿势
  2. Springboot下使用WebSocket和浏览器进行长连接通信
  3. RedisTemplate存数据时指定过期时间
  4. vue中element-ui table滚动加载
  5. 测试用例设计与管理思路整理
  6. tomcat之一:指定tomcat运行时JDK版本
  7. cisco ADSL配置
  8. POJ3264Balanced Lineup(线段树)
  9. oracle语言的分类及其常见的系统函数
  10. GAE 博客——B3log Solo 0.3.0 正式版发布了!