See you~ HDU1892
一开始还离散化弄了好久 离散化细节弄得好差
这题用二维树状数组做很快 因为树状数组下标不为0 所以所有下标要加一处理
还有就是算矩阵的时候要处理两个坐标的大小关系
个人感觉树状数组用for语句写更加简洁
#include<bits/stdc++.h>
using namespace std;
int c[][];
int n;
int lowbit(int i)
{
return i&-i;
}
void update(int x,int y,int v)
{
for(int i=x;i<n;i+=lowbit(i))
for(int j=y;j<n;j+=lowbit(j))
c[i][j]+=v;
}
long long sum(int x,int y)
{
long long ans=;
for(int i=x;i>;i-=lowbit(i))
for(int j=y;j>;j-=lowbit(j))
ans+=c[i][j];
return ans;
}
int main()
{
int cas;
scanf("%d",&cas);
n=;
for(int i=;i<=cas;i++)
{
printf("Case %d:\n",i);
memset(c,,sizeof(c));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
update(i,j,);
int q;
scanf("%d",&q);
char s[];
int x1,x2,y1,y2,n1;
while(q--)
{
scanf("%s",s);
if(s[]=='A')
{
scanf("%d%d%d",&x1,&y1,&n1);
update(x1+,y1+,n1);
}
else if(s[]=='D')
{
scanf("%d%d%d",&x1,&y1,&n1);
x1++;y1++;
int w=sum(x1,y1)-sum(x1,y1-)-sum(x1-,y1)+sum(x1-,y1-);
if(w-n1>=) update(x1,y1,-n1);
else update(x1,y1,-w);
}
else if (s[]=='S')
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x1++;y1++;x2++;y2++;
if(x1>x2)swap(x1,x2);
if(y1>y2)swap(y1,y2);
printf("%d\n", sum(x2,y2)-sum(x2,y1-)-sum(x1-,y2)+sum(x1-,y1-) );
}
else if(s[]=='M')
{
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n1);
x1++;y1++;x2++;y2++;
int w=sum(x1,y1)-sum(x1,y1-)-sum(x1-,y1)+sum(x1-,y1-);
if(w>=n1){ update(x1,y1,-n1);update(x2,y2,n1); }
else {update(x1,y1,-w);update(x2,y2,w);}
}
}
}
return ;
}
See you~ HDU1892的更多相关文章
- HDU1892二维树状数组
See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- hdu-1892 See you~---二维树状数组运用
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 题目大意: 题目大意:有很多方格,每个方格对应的坐标为(I,J),刚开始时每个格子里有1本书, ...
- HDU1892 See you~
Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission( ...
- See you~(hdu1892)
See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- BZOJ1173 CDQ分治 笔记
目录 二维数据结构->cdq 预备知识 T1: 二维树状数组 T2:cdq分治 bzoj1176 mokia:Debug心得 一类特殊的CDQ分治 附: bzoj mokia AC代码 二维数据 ...
随机推荐
- android BroadcastReceiver组件简单的使用
1.清单文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=& ...
- luogu P2123 皇后游戏
传送门 跟国王游戏一样的分析 考虑相邻的两个大臣,设他们前面的\(\sum a_j\)为\(s\),同时注意到后面人的贡献更大 所以\(i\)在前面时,\(c_j=\max(\max(c_{last} ...
- python安装curses库
windows系统在安装curses库时,如果直接使用conda或者pip安装,总是失败,到如下网址直接下载.whl文件,然后再用pip安装即可. https://www.lfd.uci.edu/~g ...
- JQuery中的$.getScript()、$.getJson()和$.ajax()方法
$.getScript() 有时候,在页面初次加载时就取得所需的全部JavaScript文件是完全没有必要的.虽然可以在需要哪个JavaScript文件时,动态地创建<script>标签, ...
- 【Udacity并行计算课程笔记】- Lesson 2 The GPU Hardware and Parallel Communication Patterns
本小节笔记大纲: 1.Communication patterns gather,scatter,stencil,transpose 2.GPU hardware & Programming ...
- Linux内存管理2---段机制
1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理. 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础.虚拟地址空间的管理.物理地址空间的管理. 本 ...
- FarBox的建站过程
FarBox的建站过程 本文转自:http://mosir.org/html/y2012/How-to-build-your-website-by-farbox.html 作者: mosir 时间: ...
- Linux关闭防火墙,开放端口
Centos/redhat系统: 开启防火墙 #systemctl start firewalld.service 停止firewall #systemctl stop firewalld.servi ...
- Jenkins中配置selenium测试
Jenkins中配置selenium测试 2015/03/23 第一步在jenkins中配置selenium服务器 第二步工程配置: 第三步:执行构建: 第四步,查看报告:
- Protocol Buffers简明教程
随着微服务架构的流行,RPC框架渐渐地成为服务框架的一个重要部分. 在很多RPC的设计中,都采用了高性能的编解码技术,Protocol Buffers就属于其中的佼佼者. Protocol Buffe ...