博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu- 2642 Stars 二维树状数组
阅读量:4286 次
发布时间:2019-05-27

本文共 1499 字,大约阅读时间需要 4 分钟。

注意树状数组下标

#include
#include
#include
#include
using namespace std;bool vis[1005][1005];int map[1005][1005];int lowbit(int x){ return x&(-x);}void add(int x,int y,int num){ for(int i = x;i <=1002;i+=lowbit(i)) for(int j = y;j <= 1002;j+=lowbit(j)) map[i][j] += num;}int get_sum(int x,int y){ int res = 0; for(int i = x;i > 0;i -= lowbit(i)) for(int j = y;j > 0;j -= lowbit(j)) res += map[i][j]; return res;}int main(){ int n,x,y,x1,y1; char c; while(~scanf("%d",&n)) { memset(vis,false,sizeof(vis)); memset(map,0,sizeof(map)); for(int i = 0;i < n;i++) { cin>>c; if(c=='B') { cin>>x>>y; if(!vis[x+1][y+1]) add(x+1,y+1,1); vis[x+1][y+1] = true; } else if(c=='D') { cin>>x>>y; if(vis[x+1][y+1]) { add(x+1,y+1,-1); vis[x+1][y+1] = false; } } else { cin>>x>>x1>>y>>y1; int min1,min2,max1,max2; min1 = min(x+1,x1+1);min2 = min(y+1,y1+1); max1 = max(x+1,x1+1);max2 = max(y+1,y1+1); int k = get_sum(max1,max2) - get_sum(min1-1,max2) - get_sum(max1,min2-1) + get_sum(min1-1,min2-1); printf("%d\n",k); } } }}

你可能感兴趣的文章
LATEX调整公式、图片与正文间距离,文字间距离,调整空白大小
查看>>
eps格式图像空白边缘裁剪
查看>>
稀疏问题的学习
查看>>
机器学习(6) MovieLens数据集
查看>>
matlab读取UCI中获取的.data文件
查看>>
matlab错误:Subscript indices must either be real positive integers or logicals.
查看>>
行列式及其性质
查看>>
matlab 保留固定长度的整数位
查看>>
xshell-常用命令
查看>>
用xshell运行matlab 远程给Linux服务器安装Matlab R2014b
查看>>
在本地电脑使用远程服务器的图形界面——包括 MATLAB、PyCharm 等各种软件
查看>>
向量转置怎么求导(多元线性回归原理推导用)
查看>>
Matlab中布尔值/逻辑值与数值型类型的相互转换
查看>>
Matlab 并行代码
查看>>
matlab中的并行方法与理解(2):parfor中的变量类型
查看>>
CentOS 7 命令行模式安装teamviewer13
查看>>
teamviewer Linux centos7安装使用详细
查看>>
【MATLAB】线条标记符大小设置
查看>>
MATLAB中矩阵的逻辑索引方法
查看>>
windows下go dep环境搭建
查看>>