二维树状数组 单点更新区间查询 模板

从零开始借鉴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二维树状数组 单点更新区间查询 模板题的更多相关文章

  1. hdu 2642 二维树状数组 单点更新区间查询 模板水题

    Stars Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Others) Total Subm ...

  2. TZOJ 2725 See you~(二维树状数组单点更新区间查询)

    描述 Now I am leaving hust acm. In the past two and half years, I learned so many knowledge about Algo ...

  3. hdu2642二维树状数组单点更新+区间查询

    http://acm.hdu.edu.cn/showproblem.php?pid=2642 题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着 ...

  4. 【2018年全国多校算法寒假训练营练习比赛(第五场)-E】情人节的电灯泡(二维树状数组单点更新+区间查询)

    试题链接:https://www.nowcoder.com/acm/contest/77/E 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡 ...

  5. SPOJ - MATSUM 二维树状数组单点更新

    忘记了单点更新时要在树状数组中减去原值..wa了一发 /* 矩形求和,单点更改 */ #include<iostream> #include<cstring> #include ...

  6. hdu2642二维树状数组单点更新

    碰到这种题一定要注意坐标是不是有序的,也要注意坐标是不是有0的,有的话需要+1处理 #include<bits/stdc++.h> using namespace std; #define ...

  7. 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?

    开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...

  8. 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询

    题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...

  9. 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询

    题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...

随机推荐

  1. Java中的流(4)InputStream,InputStreamReader,BufferedReader关系

    InputStream是字节流,InputStreamReader将字节流转成字符流,BufferedReader将字符流转成字符缓冲,开始读字符. 1.InputStream.OutputStrea ...

  2. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第三天(非原创)

    文章大纲 一.课程介绍二.简单功能实现三.图片上传功能实战四.项目源码与资料下载五.参考文章   一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用. ...

  3. vue全局loading组件

    本组件作用在页面加载完成前进行loader提示,提升用户体验,只需要在app.vue中引用一次,整个项目中路由切换时就可以自动进行提示(vuex版): 1. 添加vuex值和方法: import Vu ...

  4. 在Bootstrap中得模态框(modal)中下拉不能显示得问题

    $.fn.modal.Constructor.prototype.enforceFocus = function () { $("#insertModal").on("s ...

  5. 关于 Oracle 11g r2 Enterprise Manager (EM) 在windows环境无法启动的解决办法

    正确的解决办法是在安装的时候使用emca正确安装 如果已经安装过Enterprise Manager: 请用是如下命令卸载后重装 emca -deconfig dbcontrol db emca -r ...

  6. vue2.0 v-model指令

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. org.springframework.orm.hibernate4.support.OpenSessionInterceptor

    /* * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Vers ...

  8. xcode 通配搜索

    class \w*<\w*> extension \w*: \w* \{\} 搜索所有泛型类.

  9. CE工具里自带的学习工具--第五关

    图解: 此时会弹出一个对话框,选择是就可以了,最终会看到:

  10. 17Web服务器端控件

    Web服务器端控件 Web服务器端控件 ASP.Net提供了两类服务器端控件:Html服务器端控件和Web服务器端控件.由于Web服务器端控件功能更强大,和Windows应用程序的控件使用方法类似,容 ...