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代码 二维数据 ...
随机推荐
- Anaconda3 指南
Anaconda 是一个 Python 的生态.它包含很多的科学计算库和大数据处理工具等. $ python --version Python 3.6.1 :: Anaconda 4.4.0 (64- ...
- Storm 集群
Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存 ...
- HTML5的学习(一)HTML5标签
HTML5是WHATWG与W3C合作,创建的一个新版本的HTML.2014年10月29日,万维网联盟宣布,经过接近8年的艰苦努力,该标准规范终于制定完成.HTML5相比于之前的HTML的其他版本增加了 ...
- DSO windowed optimization 代码 (4)
5 "step"计算 参考<DSO windowed optimization 公式>,计算各个优化变量的增加量. 公式再写一下: \[\begin{align} \b ...
- JSON和JSONP的区别,以及使用方法
(一)场景 在拉京东城市选择的基础数据时候,遇到被服务器拒绝的情况,也就是ajax跨域问题 (二)json和jsonp 说的直白一点,在我们做ajax异步的一些功能的时候,一定会或多或少的遇到两个问题 ...
- NFS配置不当导致的那些事儿
NFS(Network File System):是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源: NFS配置:(声明:以下NFS实验是在RedHat7上 ...
- JS禁止右键查看源码,禁止复制,复制内容到剪切板
有时候我们希望自己的网页源码不被查看,这时需要关掉鼠标的右击事件;有时候我们也希望禁止选择页面内容Ctrl+C复制. 1.禁止右键查看源码; <script> //设置右键事件 funct ...
- Latex graphicx 宏包 scalebox命令
scalebox 命令需要加载 \usepackage{graphicx} \scalebox{水平缩放因子}[垂直缩放因子]{对象} \scalebox 命令对其作用的对象进行缩放,使缩放后的对 ...
- 董事局主席董事长总裁首席执行官CEO总裁董事监事区别
董事长是公司的最大股东:董事长是董事会的主席,一般是企业的所有者,掌握企业的股权并且决定企业的发展策略. 董事局主席通常是在大财团中才会出现,董事局主席管数个董事长,一个大财团涉及很多方面的业务,因此 ...
- javascript中cookie常用操作
//写cookies function setCookie(c_name, value, expiredays){ var exdate=new Date(); exdate.setTime(exda ...