hdu 2642二维树状数组 单点更新区间查询 模板题
二维树状数组 单点更新区间查询 模板
从零开始借鉴http://www.2cto.com/kf/201307/227488.html
#include<stdio.h>
#include<string.h>
#define N 1100
int c[N][N],visit[N][N],n;
int number(int x) {
return x&-x;
}
void insert(int x,int y,int z) {
int i,j;
for(i=x;i<=N;i+=number(i))//到最大的范围N,而不是n.
for(j=y;j<=N;j+=number(j))
c[i][j]+=z;
}
int sum(int x,int y) {
int i,j,su=0;
for(i=x;i>0;i-=number(i))
for(j=y;j>0;j-=number(j))
su+=c[i][j];
return su;
}
int main() {
int i,j,a,b,x1,x2,y1,y2;
char s[3];
while(scanf("%d",&n)!=EOF) {
memset(visit,0,sizeof(visit));
memset(c,0,sizeof(c));
while(n--) {
scanf("%s",s);
if(s[0]=='B') {
scanf("%d%d",&a,&b);
a++;b++;
if(visit[a][b])
continue;
visit[a][b]=1;
insert(a,b,1);
}
if(s[0]=='D') {
scanf("%d%d",&a,&b);
a++;b++;
if(visit[a][b]==0)
continue;
visit[a][b]=0;
insert(a,b,-1);
}
if(s[0]=='Q') {
scanf("%d%d%d%d",&x1,&x2,&y1,&y2);
x1++;x2++;y1++;y2++;
if(x1>x2) {i=x1;x1=x2;x2=i;}
if(y1>y2) {i=y1;y1=y2;y2=i;}
j=sum(x2,y2)-sum(x2,y1-1)-sum(x1-1,y2)+sum(x1-1,y1-1);//用x2,y2范围内的减去x2,y1-1和x1-1,y2范围内的加上多减了一个x1-1,y1-1。
printf("%d\n",j);
}
}
}
return 0;
}
hdu 2642二维树状数组 单点更新区间查询 模板题的更多相关文章
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
Stars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Subm ...
- TZOJ 2725 See you~(二维树状数组单点更新区间查询)
描述 Now I am leaving hust acm. In the past two and half years, I learned so many knowledge about Algo ...
- hdu2642二维树状数组单点更新+区间查询
http://acm.hdu.edu.cn/showproblem.php?pid=2642 题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着 ...
- 【2018年全国多校算法寒假训练营练习比赛(第五场)-E】情人节的电灯泡(二维树状数组单点更新+区间查询)
试题链接:https://www.nowcoder.com/acm/contest/77/E 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡 ...
- SPOJ - MATSUM 二维树状数组单点更新
忘记了单点更新时要在树状数组中减去原值..wa了一发 /* 矩形求和,单点更改 */ #include<iostream> #include<cstring> #include ...
- hdu2642二维树状数组单点更新
碰到这种题一定要注意坐标是不是有序的,也要注意坐标是不是有0的,有的话需要+1处理 #include<bits/stdc++.h> using namespace std; #define ...
- 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?
开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...
- 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询
题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...
- 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询
题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...
随机推荐
- Java中的流(4)InputStream,InputStreamReader,BufferedReader关系
InputStream是字节流,InputStreamReader将字节流转成字符流,BufferedReader将字符流转成字符缓冲,开始读字符. 1.InputStream.OutputStrea ...
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第三天(非原创)
文章大纲 一.课程介绍二.简单功能实现三.图片上传功能实战四.项目源码与资料下载五.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用. ...
- vue全局loading组件
本组件作用在页面加载完成前进行loader提示,提升用户体验,只需要在app.vue中引用一次,整个项目中路由切换时就可以自动进行提示(vuex版): 1. 添加vuex值和方法: import Vu ...
- 在Bootstrap中得模态框(modal)中下拉不能显示得问题
$.fn.modal.Constructor.prototype.enforceFocus = function () { $("#insertModal").on("s ...
- 关于 Oracle 11g r2 Enterprise Manager (EM) 在windows环境无法启动的解决办法
正确的解决办法是在安装的时候使用emca正确安装 如果已经安装过Enterprise Manager: 请用是如下命令卸载后重装 emca -deconfig dbcontrol db emca -r ...
- vue2.0 v-model指令
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- org.springframework.orm.hibernate4.support.OpenSessionInterceptor
/* * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Vers ...
- xcode 通配搜索
class \w*<\w*> extension \w*: \w* \{\} 搜索所有泛型类.
- CE工具里自带的学习工具--第五关
图解: 此时会弹出一个对话框,选择是就可以了,最终会看到:
- 17Web服务器端控件
Web服务器端控件 Web服务器端控件 ASP.Net提供了两类服务器端控件:Html服务器端控件和Web服务器端控件.由于Web服务器端控件功能更强大,和Windows应用程序的控件使用方法类似,容 ...