HDU2642(二维的树状数组)
二维的树状数组,我记得是模版!^ _ ^
题意很清楚:就是这部分的原理:sum(x1,y1)+sum(x2-1,y2-1)-sum(x1,y2-1)-sum(x2-1,y1);
其实可以和概率论中的一个计算概率的问题结合起来。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int maxx=1005;
const int inf=0x3f3f3f3f;
int bit[maxx][maxx];
int vis[maxx][maxx];
int n;
int lowbit(int x){return x&(-x);
}
void add(int x,int y,int v){for(int i=x;i<=maxx;i+=lowbit(i)){for(int j=y;j<=maxx;j+=lowbit(j)){bit[i][j]+=v;}}
}
int sum(int x,int y){int s=0;for(int i=x;i>=1;i-=lowbit(i)){for(int j=y;j>=1;j-=lowbit(j)){s+=bit[i][j];}}return s;
}
int query(int x,int y,int x1,int y1){return sum(x1+1,y1+1)-sum(x,y1+1)-sum(x1+1,y)+sum(x,y);
}
int main(){char s[5];while(scanf("%d",&n)!=EOF){memset(vis,0,sizeof(vis));memset(bit,0,sizeof(bit));for(int i=1;i<=n;i++){int a,b,c,d;cin>>s;if(s[0]=='B'||s[0]=='D'){cin>>a>>b;a++;b++;if(s[0]=='B'&&vis[a][b]==0){add(a,b,1);vis[a][b]=1;}if(s[0]=='D'&&vis[a][b]==1){add(a,b,-1);vis[a][b]=0;}}else if(s[0]=='Q'){int x,y,x1,y1;cin>>x>>x1>>y>>y1;if(x>x1){swap(x,x1);}if(y>y1){swap(y,y1);}int q=query(x,y,x1,y1);cout<<q<<endl;}}}return 0;
}
HDU2642(二维的树状数组)相关推荐
- 洛谷 - P2163 [SHOI2007]园丁的烦恼(不带修二维数点-树状数组/主席树)
题目链接:点击查看 题目大意:二维平面坐标系中给出 nnn 个坐标点,然后是 mmm 次询问,每次询问需要回答一个闭合矩阵中有多少个点 题目分析:想挂树套树来着,但是复杂度有点大.本题不带修且可以离线 ...
- 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]
题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...
- POJ 1195 Mobile phones(裸的二维树状数组)
http://poj.org/problem?id=1195 题意:给出一个矩阵,给某个格子加/减一个数,就某个子矩阵的和,1024*1024的范围,二维的树状数组 子矩阵(x1,y1,x2,y2)( ...
- 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结
文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...
- HDU-1541 Stars 树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=1541 题义为给定N个点按照先x轴,后y轴坐标排序,求某一点的左下角的星星数量,刚开始用二维的树状数组来做,结果肯 ...
- 树状数组 Binary Indexed Tree/Fenwick Tree
2018-03-25 17:29:29 树状数组是一个比较小众的数据结构,主要应用领域是快速的对mutable array进行区间求和. 对于一般的一维情况下的区间和问题,一般有以下两种解法: 1)D ...
- 快乐地打牢基础(4)——树状数组
在解题的过程中,我们想维护一个数组的前缀和s[i] = A[1] + A[2] +-+A[i].我们改变任意一个A[i],那么S[i]之后都会发生变化,朴素写法调整前缀和S最坏的情况需要O(n)的时间 ...
- 【学习笔记+习题集】(树状数组)(9473字)
目录 板块一:树状数组 引子:lowbit 1.存入数据(单点修改) 2.区间查询 练习1:hdoj1541 3.区间修改和单点查询(差分数组) 练习1:hdoj 1556 练习2:洛谷P3368 4 ...
- 【转载】树状数组题目
先提个注意点,由于Lowbit(0) = 0,这会导致x递增的那条路径发生死循环,所有当树状数组中可能出现0时,我们都全部加一,这样可以避免0带来的麻烦-- 简单: POJ 2299 Ul ...
最新文章
- 机器人过程自动化的10个秘密
- php 提取全部html标签,php提取html中的img标签
- android5.1内核版本,Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核
- web安全101之如何理解XXE?
- Spring与Hibernate结合使用
- 关于C/C++中的“auto”关键字
- java中未解决的编译问题_java – 我遇到了这个异常:未解决的编译问题
- CCNA-3-Cisco静态路由
- 简化CommunityServer模板机制
- Pandas数据框索引函数 iloc、loc和ix学习使用
- 某计算机房空气调节系统设计,空气调节工程思考题习题答案(精品DOC)
- IDEA如何安装使用阿里代码规范插件
- MKS-DLC雕刻MKS_TFT_CNC字机器,CNC雕刻,激光雕刻GRBL使用方法
- 人力资源书籍排行榜,这些好书不容错过!
- jquery按钮加载动画插件loda-button
- python引入视频_django 实现简单的插入视频
- 微信开发者工具的下载及小程序项目创建
- Oracle中rowid的用法(全面)
- 让我们跳过中年危机,直接聊聊如何善终
- 中国早期概率论与数理统计学研究达到世界先进水平的杰出学者许宝騄(P.L.Hsu, 1910-1970)
热门文章
- 卷积神经网络(CNN)实现CIFAR100类别分类
- 爬虫基础-request的一些基础属性
- Linux里面的正则表达式!
- GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程
- 经验 | 秋招总结(拼多多,腾讯,百度,字节)
- 面向软件工程师的卡尔曼滤波器
- OpenVINO开发教程之八 – 道路分割
- Three levels at which any machine carrying out an Information-Processing task must be understood
- BCH专属“谷歌地图”凸显BCH魅力
- 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇