HDU 1892 See you~ 【 二维树状数组 】
题意:二维的树状数组
注意的有三个地方,
输入进去的坐标都加1,防止lowbit(0) + 0造成死循环
还有就是询问矩形面积的时候,输入进去的x1,x2,y1,y2,可能不是正对角线,要转化成正对角线
初始化的时候,是每个点的值为1
#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; int a[][],c[][]; int lowbit(int x){ return x & (-x);} int sum(int x,int y){
int ret=;
for(int i=x;i>;i-=lowbit(i))
for(int j=y;j>;j-=lowbit(j))
ret+=c[i][j]; return ret;
} void add(int x,int y,int d){
for(int i=x;i<;i+=lowbit(i))
for(int j=y;j<;j+=lowbit(j))
c[i][j]+=d;
} void init(){
memset(c,,sizeof(c));
for(int i=;i<;i++){
for(int j=;j<;j++){
add(i,j,);
a[i][j] = ;
}
}
} int main(){
int T;
int kase = ;
scanf("%d",&T);
while(T--){
printf("Case %d:\n",++kase);
init();
int m;
scanf("%d%*c",&m);
while(m--){
char cmd;
scanf("%c",&cmd);
if(cmd == 'S') {
int x,xx,y,yy,x1,x2,y1,y2;
scanf("%d%d%d%d%*c",&x,&y,&xx,&yy);
x++;y++;xx++;yy++;
x1 = min(x,xx);x2 = max(x,xx);
y1 = min(y,yy); y2 = max(y,yy); int ans=;
ans += sum(x1-,y1-);
ans -= sum(x1-,y2);
ans -= sum(x2,y1-);
ans += sum(x2,y2);
printf("%d\n",ans);
} if(cmd == 'A'){
int x1,y1,n1;
scanf("%d%d%d%*c",&x1,&y1,&n1);
x1++;y1++;
a[x1][y1]+=n1;
add(x1,y1,n1);
}
if(cmd == 'D'){
int x1,y1,n1;
scanf("%d%d%d%*c",&x1,&y1,&n1);
x1++;y1++;
n1 = min(n1,a[x1][y1]);
a[x1][y1]-=n1;
add(x1,y1,-n1);
}
if(cmd == 'M'){
int x1,y1,x2,y2,n1;
scanf("%d%d%d%d%d%*c",&x1,&y1,&x2,&y2,&n1);
x1++;y1++;x2++;y2++;
n1=min(n1,a[x1][y1]);
a[x1][y1]-=n1;a[x2][y2]+=n1;
add(x1,y1,-n1);
add(x2,y2,n1);
}
}
}
return ;
}
HDU 1892 See you~ 【 二维树状数组 】的更多相关文章
- HDU 1892(书架统计 二维树状数组)
题意是在二维平面上在一些位置上进行数据的增删改查操作,使用树状数组(了解树状数组点这里) 原来的树状数组在求区间和时是 sum( x, y ) = getsum( y ) - getsum( x - ...
- HDU 1892 See you~ (二维树状数组)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 See you~ Problem Description Now I am leaving h ...
- 【 HDU - 4456 】Crowd (二维树状数组、cdq分治)
BUPT2017 wintertraining(15) #5A HDU 4456 题意 给你一个n行n列的格子,一开始每个格子值都是0.有M个操作,p=1为第一种操作,给格子(x,y)增加z.p=2为 ...
- hdu 2642 Stars 【二维树状数组】
题目 题目大意:Yifenfei是一个浪漫的人,他喜欢数天上的星星.为了使问题变得更容易,我们假设天空是一个二维平面,上面的星星有时会亮,有时会发暗.最开始,没有明亮的星星在天空中,然后将给出一些信息 ...
- hdu 5517 Triple(二维树状数组)
Triple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- HDU 5517---Triple(二维树状数组)
题目链接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite mult ...
- HDU 5517 【二维树状数组///三维偏序问题】
题目链接:[http://acm.split.hdu.edu.cn/showproblem.php?pid=5517] 题意:定义multi_set A<a , d>,B<c , d ...
- HDU 5465 Clarke and puzzle Nim游戏+二维树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle Accepts: 42 Submissions: 26 ...
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
Stars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Subm ...
- hdu 2642二维树状数组 单点更新区间查询 模板题
二维树状数组 单点更新区间查询 模板 从零开始借鉴http://www.2cto.com/kf/201307/227488.html #include<stdio.h> #include& ...
随机推荐
- layer.js漂亮的弹出框
它的官方网站:http://layer.layui.com/ 消息.确认框.ifame.自定义文本.旋转木马,都有按钮,是一款强大的js 弹出框: 以下为本人的简单介绍: layer.open({ t ...
- Upload图片-单张
上传图片全不怕,轻松实现图片上传, 可以实现显示缩略图喔: 后台代码: protected void btnpic_upload_Click(object sender, EventArgs e) { ...
- 清北集训Day6T1(生成函数)
听rqy说可以用生成函数做,感觉比较有意思 我们考虑在DP转移的时候, $5,7,9$这三个数是没有限制的 因此他们出现的次数用01串表示的话就是$1111111111111111......$ $3 ...
- python小项目之头像右上角加数字
pillow介绍 一.Image类的属性:1.Format 2.Mode 3.Size 4.Palette 5.Info 二.类的函数:1.New 2.Open 3.Ble ...
- 手机号获取省份,城市api的使用
function get_mobile_area($mobile){ header('Content-Type:text/html;charset=gbk'); $url = 'http://life ...
- 谁说NTFS不支持UEFI启动的?启动U盘放不了超过4G的文件怎么办?Server2016 Win10 U盘UEFI启动制作方法
大家都知道,我们平时做启动盘,用得最多的就是UltraISO(软碟通)这个工具了.用它我们可以很简单快速的把一个空白的普通U盘制作成一个PE启动U盘或系统U盘,然后用它来安装系统非常的方便,受到了广大 ...
- 洛谷T44252 线索_分治线段树_思维题
分治线段树,其实就是将标记永久化,到最后再统一下传所有标记. 至于先后顺序,可以给每个节点开一个时间戳. 一般地,分治线段树用于离线,只查询一次答案的题目. 本题中,标记要被下传 222 次. Cod ...
- 《Exception》第八次团队作业:Alpha冲刺(大结局)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...
- 进入docker 容器内命令
docker exec :在运行的容器中执行命令 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后 ...
- HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换
题目链接:https://cn.vjudge.net/problem/HDU-2955 题意 突然想找几个银行抢钱. 给出各银行的钱数和被抓的概率,以及能容忍的最大被抓概率. 问他最多能抢到多少钱? ...