hdu2642二维树状数组单点更新+区间查询
http://acm.hdu.edu.cn/showproblem.php?pid=2642
题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着,有Q个操作:
B x y 点亮一盏星星
D x y 熄灭一盏星星
Q fx tx fy ty 查询这个矩形里面亮着的星星的个数.
题解:首先,注意输入的x,y可能是(0,0),这样一来,用树状数组就不好维护了,所以将之平移一个单位,每当读入一对坐标,要进行x++,y++..
其次,输入的查询,矩形的fx,tx大小未定,所以用:if(fx>tx)swap(fx,tx);进行判断一下
最后,星星点亮了可能还会再次点亮,所以需要加上一个状态数组进行判断.
#include<iostream>
#include<math.h>
#include<algorithm>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define ll long long
#define re(i,n) for(int i=0;i<n;i++)
const int maxn = 1007;
int a[maxn][maxn];
bool sta[maxn][maxn];
int lowbit(int x){
return x&-x;
}
void update(int x, int y, int d){
for (int i = x; i < maxn; i+=lowbit(i)){
for (int j = y; j < maxn; j+=lowbit(j)){
a[i][j] += d;
}
}
}
int query(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 += a[i][j];
}
}
return ans;
}
int main(){
freopen("in.txt", "r", stdin);
int q; cin >> q;
memset(a, 0, sizeof(a)), memset(sta, 0, sizeof(sta));
while (q--){
char op[2]; scanf("%s", op);
if (op[0] == 'Q'){
int fx, fy, tx, ty; scanf("%d%d%d%d", &fx, &tx, &fy, &ty);
fx++, fy++, tx++, ty++;
if (fx>tx)swap(fx, tx); if (fy > ty)swap(fy, ty);
fx--, fy--;
int ans = query(tx, ty) + query(fx, fy) - query(tx, fy) - query(fx, ty);
printf("%d\n", ans);
}
else{
int x, y; scanf("%d%d", &x, &y); x++, y++;
if (op[0] == 'B'){
if (sta[x][y])continue;
update(x, y, 1), sta[x][y] = 1;
}
else{
if (sta[x][y] == false)continue;
update(x, y, -1), sta[x][y] = 0;
}
}
}
return 0;
}
hdu2642二维树状数组单点更新+区间查询的更多相关文章
- hdu 2642二维树状数组 单点更新区间查询 模板题
二维树状数组 单点更新区间查询 模板 从零开始借鉴http://www.2cto.com/kf/201307/227488.html #include<stdio.h> #include& ...
- TZOJ 2725 See you~(二维树状数组单点更新区间查询)
描述 Now I am leaving hust acm. In the past two and half years, I learned so many knowledge about Algo ...
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
Stars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Subm ...
- hdu2642二维树状数组单点更新
碰到这种题一定要注意坐标是不是有序的,也要注意坐标是不是有0的,有的话需要+1处理 #include<bits/stdc++.h> using namespace std; #define ...
- 【2018年全国多校算法寒假训练营练习比赛(第五场)-E】情人节的电灯泡(二维树状数组单点更新+区间查询)
试题链接:https://www.nowcoder.com/acm/contest/77/E 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡 ...
- SPOJ - MATSUM 二维树状数组单点更新
忘记了单点更新时要在树状数组中减去原值..wa了一发 /* 矩形求和,单点更改 */ #include<iostream> #include<cstring> #include ...
- 牛客网 暑期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个矩形中,随机选出两个不 ...
随机推荐
- linux运维常用命令及知识
1.查找当前目录下所有以.tar结尾的文件然后移动到指定目录: find . -name “*.tar” -exec mv {} ./backup/ ; 查找当前目录30天以前大于100M的LOG文件 ...
- git 学习使用总结三(远程仓库操作)
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分. pull, fetch, clone, push, chec ...
- 32-bit ALU [Verilog]
Based on MIPS Instruction Structure Main Module module Alu( input [31:0] a, // operand 1 input [31:0 ...
- 关于TD-LTE网络MRO分析中的一些疑问
1.eNB天线到达角(LteScAOA)超出正常值范围 在OMC-R测量报告技术要求中此字段的定义为: "定义了一个用户相对参考方向的估计角度.测量参考方向应为正北,逆时针方向.可以辅助确定 ...
- Java正则获取邮箱
实现思路 1.使用Java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过 ...
- for循环与for循环嵌套
今天温习了下分支语句跟for循环,主要讲解了for循环嵌套,这里开始有点迷糊了,整理下思路在做练习 for循环嵌套用我自己的大白话来说就是一个外圈的for程序里面一个套着一个小的for程序,如果在范围 ...
- 微软前 CEO 史蒂姆·鲍尔默:除了我们没人拼得过苹果硬件
微软通过 Surface Book 正式宣布进军笔记本电脑行业的同时,宣传语表示 Surface Book“比苹果的 MacBook Pro 还要快两倍”. 业界对 Surface Book 的好评连 ...
- NOIP模拟赛 行走
题目描述 “我有个愿望,我希望走到你身边.” 这是个奇异的世界,世界上的n-1条路联结起来形成一棵树,每条路有一个对应的权值ci. 现在我会给出q组询问或操作. 每次询问我会从一个x点走到y点,初始在 ...
- 微信v3 JSAPI最新接口错误 get_brand_wcpay_request:fail
WxPay.JsApiPay.php文件下 原始接口代码 /** * * 获取jsapi支付的参数 * @param array $UnifiedOrderResult 统一支付接口返回的数据 * @ ...
- 批量去除Teleport Pro整站下载文件冗余代码
teleport pro tppabs标签批量删除 teleport pro tppabs标签批量删除 使 用Teleport Pro下载的网页代码中包含了很多垃圾代码,比如下载的html网页代码中会 ...