题意:二维的树状数组
注意的有三个地方,
输入进去的坐标都加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~ 【 二维树状数组 】的更多相关文章

  1. HDU 1892(书架统计 二维树状数组)

    题意是在二维平面上在一些位置上进行数据的增删改查操作,使用树状数组(了解树状数组点这里) 原来的树状数组在求区间和时是 sum( x, y ) = getsum( y ) - getsum( x - ...

  2. HDU 1892 See you~ (二维树状数组)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 See you~ Problem Description Now I am leaving h ...

  3. 【 HDU - 4456 】Crowd (二维树状数组、cdq分治)

    BUPT2017 wintertraining(15) #5A HDU 4456 题意 给你一个n行n列的格子,一开始每个格子值都是0.有M个操作,p=1为第一种操作,给格子(x,y)增加z.p=2为 ...

  4. hdu 2642 Stars 【二维树状数组】

    题目 题目大意:Yifenfei是一个浪漫的人,他喜欢数天上的星星.为了使问题变得更容易,我们假设天空是一个二维平面,上面的星星有时会亮,有时会发暗.最开始,没有明亮的星星在天空中,然后将给出一些信息 ...

  5. hdu 5517 Triple(二维树状数组)

    Triple Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  6. HDU 5517---Triple(二维树状数组)

    题目链接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite mult ...

  7. HDU 5517 【二维树状数组///三维偏序问题】

    题目链接:[http://acm.split.hdu.edu.cn/showproblem.php?pid=5517] 题意:定义multi_set A<a , d>,B<c , d ...

  8. HDU 5465 Clarke and puzzle Nim游戏+二维树状数组

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle  Accepts: 42  Submissions: 26 ...

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

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

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

    二维树状数组 单点更新区间查询 模板 从零开始借鉴http://www.2cto.com/kf/201307/227488.html #include<stdio.h> #include& ...

随机推荐

  1. 微信小程序 | 小程序的转发问题

    1.配置小程序页面静态转发信息 关于小程序转发问题,文档 在 page 页面填加了该监听函数,会在小程序右上角 ... 菜单中显示“转发”按钮: 监听函数需要 return {} 其中的内容配置转发信 ...

  2. 有关PHP数组

    在PHP中,数组就是关键字和值的集合,我们可以使用array关键字创建: $arr=array[100,200,300,400,500]:           //这是一个自定义数组,数组里面的值是自 ...

  3. 杭电 2639 Bone Collector II【01背包第k优解】

    解题思路:对于01背包的状态转移方程式f[v]=max(f[v],f[v-c[i]+w[i]]);其实01背包记录了每一个装法的背包值,但是在01背包中我们通常求的是最优解, 即为取的是f[v],f[ ...

  4. 3ds Max制作欧式风格的墙壁路灯效果

    在这篇文章中,我将解释我创建我的形象元宵节的步骤.我只是在寻找一个很好的参考图像在互联网上的东西,我觉得我想要的模型,这个形象.我发现了一个巨大的灯笼形象,但在白天的图片拍摄.我想改变我的形象和显示的 ...

  5. 12 个最佳 GNOME(GTK)主题

    作者: Phillip Prado 译者: LCTT 郑 | 2019-04-14 09:45   评论: 1 收藏: 2 让我们来看一些漂亮的 GTK 主题,你不仅可以用在 Ubuntu 上,也可以 ...

  6. Codeforces Round #506 (Div. 3) A-C

    CF比赛题解(简单题) 简单题是指自己在比赛期间做出来了 A. Many Equal Substrings 题意 给个字符串t,构造一个字符串s,使得s中t出现k次;s的长度最短 如t="c ...

  7. js 获取对象长度

    获取对象的程度,可以这样获取: var myObj = {a:1,b:2,c:3} var arr = Object.keys(myObj);var len = arr.length  console ...

  8. [USACO07OPEN]Catch That Cow

    题目:洛谷P1588.HDU2717 题目大意:有一个人在点$n$,一头牛在点$k$,人每秒能从$x$移动到点$x+1$.$x-1$.$2x$,牛不会动,求最少多少秒后人能移动到牛所在的$k$. 思路 ...

  9. [luogu4259 SCOI2003] 严格N元树 (高精 计数dp)

    题目描述 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严格2元树有三个, ...

  10. linux下如何查看cpu信息

    linux的cpu信息可以从文件中cpuinfo读取. 执行命令: # cat  /proc/cpuinfo   我们一般看到的processor是逻辑核. 它的计数是从0开始的,例如这里看到的是31 ...