最裸的二维树状数组,但是因为内存太大(c[1010][1010]),好像不能运行,结果蒙着写,写了好久。。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 1010 int c[N][N]; int lowbit(int x)
{
return x&(-x);
} void modify(int x,int y,int val)
{
for(int i=x;i<=N;i+=lowbit(i))
{
for(int j=y;j<=N;j+=lowbit(j))
{
c[i][j] += val;
}
}
} int sum(int x,int y)
{
int res = ;
for(int i=x;i>;i-=lowbit(i))
{
for(int j=y;j>;j-=lowbit(j))
{
res += c[i][j];
}
}
return res;
} int GetIt(int x1,int y1,int x2,int y2)
{
int maxx = max(x1,x2);
int maxy = max(y1,y2);
int minx = min(x1,x2);
int miny = min(y1,y2);
return sum(maxx+,maxy+)-sum(minx,maxy+)-sum(maxx+,miny)+sum(minx,miny);
} int main()
{
int t,q,i,j;
int x1,x2,y1,y2,n1;
char ss[];
int cs = ;
scanf("%d",&t);
while(t--)
{
printf("Case %d:\n",cs++);
scanf("%d",&q);
memset(c,,sizeof(c));
for(i=;i<N;i++)
{
for(j=;j<N;j++)
{
modify(i,j,);
}
}
while(q--)
{
scanf("%s",ss);
if(ss[] == 'S')
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("%d\n",GetIt(x1,y1,x2,y2));
}
else if(ss[] == 'A')
{
scanf("%d%d%d",&x1,&y1,&n1);
modify(x1+,y1+,n1);
}
else if(ss[] == 'D')
{
scanf("%d%d%d",&x1,&y1,&n1);
int val = sum(x1+,y1+)-sum(x1,y1+)-sum(x1+,y1)+sum(x1,y1);
int Min = min(n1,val);
modify(x1+,y1+,-Min);
}
else if(ss[] == 'M')
{
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n1);
int val = sum(x1+,y1+)-sum(x1,y1+)-sum(x1+,y1)+sum(x1,y1);
int Min = min(n1,val);
modify(x1+,y1+,-Min);
modify(x2+,y2+,Min);
}
}
}
return ;
}

HDU 1892 See you~的更多相关文章

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

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

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

    See you~ Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Su ...

  3. hdu 1892 树状数组

    思路:就是一个很普通的二维树状数组,注意的是x1,y1不一定在x2,y2的左下方. #include<iostream> #include<cstring> #include& ...

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

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

  5. HDU 1892 See you~ 【 二维树状数组 】

    题意:二维的树状数组注意的有三个地方,输入进去的坐标都加1,防止lowbit(0) + 0造成死循环还有就是询问矩形面积的时候,输入进去的x1,x2,y1,y2,可能不是正对角线,要转化成正对角线 初 ...

  6. HDU题解索引

    HDU 1000 A + B Problem  I/O HDU 1001 Sum Problem  数学 HDU 1002 A + B Problem II  高精度加法 HDU 1003 Maxsu ...

  7. BIT 树状数组 详解 及 例题

    (一)树状数组的概念 如果给定一个数组,要你求里面所有数的和,一般都会想到累加.但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组 ...

  8. HDU 2689Sort it 树状数组 逆序对

    Sort it Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  9. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

随机推荐

  1. Spring框架之AOP

    SpringAop: 1.加入 jar 包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver ...

  2. sphinx使用随笔

    为什么需要进行全文搜索呢? 一个表中有a.b.c多个字段.我们使用sql进行like搜索的时候,往往只能匹配某个字段.或者是这样的形式:a LIKE “%关键词%”or b LIKE “关键词” 这样 ...

  3. httpclient 认证方式访问http api/resutful api并获取json结果

    最近,因公司线上环境rabbitmq经常发生堆积严重的现象,于是跟运维组讨论,帮助开发个集中监控所有rabbitmq服务器运行情况的应用,需要通过java访问rabbitmq暴露的http api并接 ...

  4. styleCop

    1styleCop安装 安装参考 2和VS集成 要和vs集成一定要在安装时把MSBuild files那个选项选中的,否则安装后是不会和VS集成集成的. 3styleCop使用 User Guide ...

  5. php 安全过滤函数代码

    php 安全过滤函数代码,防止用户恶意输入内容. //安全过滤输入[jb] function check_str($string, $isurl = false) { $string = preg_r ...

  6. Android WebView 获取网页的标题

    final TextView txtTitle = (TextView) findViewById(R.id.txtTitle); final WebView webView = (WebView)f ...

  7. 【转】内部Handler类引起内存泄露

    如果您在Activity中定义了一个内部Handler类,如下代码: public class MainActivity extends Activity {       private  Handl ...

  8. 使用python检测一个设备是否ping的通

    使用python检测一个设备是否ping的通 一,subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并 ...

  9. git学习笔记1

    很早以前就听说了git,今天就开始使用git,并做简单记录 在Linux上安装Git 首先,你可以试着输入git,看看系统有没有安装Git: $ git The program 'git' is cu ...

  10. UISlider常见属性

    常见属性 self.mySlider.minimumValue = 0.0;   // 最小值 self.mySlider.maximumValue = 10;    // 最大值 self.mySl ...