hdu 1892 树状数组
思路:就是一个很普通的二维树状数组,注意的是x1,y1不一定在x2,y2的左下方。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define Maxn 1105
#define lowbit(x) (x&(-x))
using namespace std;
int C[Maxn][Maxn],n=,LIST[Maxn][Maxn];
int Sum(int i,int j)
{
int sum=;
int y;
y=j;
while(i)
{
j=y;
while(j)
{
sum+=C[i][j];
j-=lowbit(j);
}
i-=lowbit(i);
}
return sum;
}
void update(int i,int j,int val)
{
int y,z;
y=j;
while(i<=n)
{
j=y;
while(j<=n)
{
C[i][j]+=val;
j+=lowbit(j);
}
i+=lowbit(i);
}
}
int main()
{
int x1,x2,y1,y2,q,t,num,i,Case=,j;
char str[];
for(i=;i<=;i++)
for(j=;j<=;j++)
update(i,j,);
for(i=;i<=;i++)
for(j=;j<=;j++)
LIST[i][j]=C[i][j];
scanf("%d",&t);
Case=;
while(t--)
{
memcpy(C,LIST,sizeof(C));
scanf("%d",&q);
printf("Case %d:\n",++Case);
for(i=;i<=q;i++)
{
scanf("%s",&str);
if(str[]=='S')
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x1++,y1++,x2++,y2++;
int a1,b1,a2,b2;
a1=min(x1,x2);a2=max(x1,x2);b1=min(y1,y2);b2=max(y1,y2);
printf("%d\n",Sum(a2,b2)-Sum(a1-,b2)-Sum(a2,b1-)+Sum(a1-,b1-));
}
if(str[]=='A')
{
scanf("%d%d%d",&x1,&y1,&num);
x1++,y1++;
update(x1,y1,num);
//printf("%d**\n",Sum(x1,y1));
}
if(str[]=='D')
{
int temp;
scanf("%d%d%d",&x1,&y1,&num);
x1++,y1++;
temp=Sum(x1,y1)-Sum(x1-,y1)-Sum(x1,y1-)+Sum(x1-,y1-);
if(temp>=num)
update(x1,y1,-num);
else
update(x1,y1,-temp);
}
if(str[]=='M')
{
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&num);
x1++,y1++,x2++,y2++;
int temp=Sum(x1,y1)-Sum(x1-,y1)-Sum(x1,y1-)+Sum(x1-,y1-);
if(temp>=num)
{
update(x1,y1,-num);
update(x2,y2,num);
}
else
{
update(x1,y1,-temp);
update(x2,y2,temp);
}
}
}
}
return ;
}
hdu 1892 树状数组的更多相关文章
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 4777 树状数组+合数分解
Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2852 (树状数组+无序第K小)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...
- HDU 4911 (树状数组+逆序数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...
- hdu 5792(树状数组,容斥) World is Exploding
hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...
- HDU 1934 树状数组 也可以用线段树
http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...
- 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...
- 【模板】HDU 1541 树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=1541 题意:给你一堆点,每个点右一个level,为其右下方所有点的数量之和,求各个level包含的点数. 题解: ...
- hdu 5147 树状数组
题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...
随机推荐
- HDU 1702 http://acm.hdu.edu.cn/showproblem.php?pid=1702
#include<stdio.h> #include<string.h> #include<queue> #include<stack> #define ...
- HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
题意:给定 13 张麻将牌,问你是不是“听”牌,如果是输出“听”哪张. 析:这个题,很明显的暴力,就是在原来的基础上再放上一张牌,看看是不是能胡,想法很简单,也比较好实现,结果就是TLE,一直TLE, ...
- Spring MVC Framework 实例
一 SpringMVC基础入门,创建一个HelloWorld程序 1 首先,导入SpringMVC需要的jar包. commons-logging-<version>.jar spring ...
- 使用gcc编译gdb调试
gcc 在linux系统中,默认是没有安装gcc编译器的,可以通过命令 rpm -q | grep gcc 来查看.安装命令为: yum -y install gcc 安装后,编写一个.c结尾的文件. ...
- Volley使用指南第四回(来自developer.android)
Volley网络请求的第四篇,废话不多说,开始. 这一篇文章将会教你怎样在Volley支持的范围内定制一个请求. 第一步:写一个通用请求: 大多数请求都有已经写好的接口供你调用,如果你的请求是Stri ...
- Rstudio编辑界面美化设置
美化Rstudio的编辑界面有利于我们输入代码,合适的调整更是减少错误. 可以根据自己的喜好和习惯选择.
- maven使用.01.Hello World
要说Java世界有什么东西是我最为留恋的:在写其他语言程序的时候,我最为想要的东西,那非maven莫属. 什么是Maven? Maven能做什么? Maven是一个针对Java的自动构建工具.所谓自动 ...
- 理解Windows中的路由表和默认网关
每一个Windows系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息.路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信都受到路由表的控制. 理 ...
- Win7 不能安装 msi 解决办法
Win7 不能安装Setup.msi解决办法 解决方案如下: 新建一个文本文件,输入msiexec /i d:\Setup.msi (假设文件名为Setup.msi ,放在d盘根目录下,即是安装程序的 ...
- esxi 5.1 由于断电错误无法启动 报错 bank5 invalid configuration
由于着急,处理过程中也没有截图,这里简单的描写叙述下整个过程吧. IBM pcserver x3850 可能是机器太热的原因,中午无故掉电,导致esxi无法正常启动 启动时报错 bank5 inval ...