一开始还离散化弄了好久  离散化细节弄得好差

这题用二维树状数组做很快  因为树状数组下标不为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的更多相关文章

  1. HDU1892二维树状数组

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

  2. hdu-1892 See you~---二维树状数组运用

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 题目大意: 题目大意:有很多方格,每个方格对应的坐标为(I,J),刚开始时每个格子里有1本书, ...

  3. HDU1892 See you~

    Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission( ...

  4. See you~(hdu1892)

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

  5. BZOJ1173 CDQ分治 笔记

    目录 二维数据结构->cdq 预备知识 T1: 二维树状数组 T2:cdq分治 bzoj1176 mokia:Debug心得 一类特殊的CDQ分治 附: bzoj mokia AC代码 二维数据 ...

随机推荐

  1. luogu P1943 LocalMaxima_NOI导刊2009提高(1)

    又是有关于\(1-n\)排列的题,考虑从大到小依次插入构造排列 对于第\(i\)个数(也就是\(n-i+1\)),只有当它插在当前排列最前面时才会使那个什么数的个数+1,而在最前面的概率为\(\fra ...

  2. IO流总结笔记一

    ​ IO流继承关系图 IO概述 IO流是用来处理设备上数据的输入输出. 具体设备有:硬盘,内存,键盘录入等等. IO流的具体分类: 1,根据处理的数据类型不同分为:字节流和字符流,字节流读取的最小单位 ...

  3. IO流总结笔记二

    ​ Reader |--InputStreamReader |--FileReader:专门用于处理文件的字符读取流对象 Writer |--OutputStreamWriter |--FileWri ...

  4. quartz开源插件(定时心跳后台执行)

    定时心跳,一般应用场景都是服务或者exe控制台程序来搜集数据推送等,供其他页面来调用或者向服务推送等,但又不限于此. 1.先来介绍下quartz吧. 2.quartz用法: 3.我写个小例子来巩固下q ...

  5. ubuntu16.04+anaconda的安装+解决conda不可用(配置路径)+卸载

    首先一点,之前我一直自己安装python,然后直接在python环境下再安装第三方库,但自从另一台电脑重装系统之后,我当时在没有python的情况下直接安装的anaconda,觉得她超级好用(所以如果 ...

  6. CentOS和RedHat Linux的区别

    RHEL 在发行的时候,有两种方式.一种是二进制的发行方式,另外一种是源代码的发行方式. 无论是哪一种发行方式,你都可以免费获得(例如从网上下载),并再次发布.但如果你使用了他们的在线升级(包括补丁) ...

  7. K-means聚类算法原理和C++实现

    给定训练集$\{x^{(1)},...,x^{(m)}\}$,想把这些样本分成不同的子集,即聚类,$x^{(i)}\in\mathbb{R^{n}}$,但是这是个无标签数据集,也就是说我们再聚类的时候 ...

  8. 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)

    [转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...

  9. input 子系统架构总结【转】

    Linux输入子系统(Input Subsystem) 转自:http://blog.csdn.net/lbmygf/article/details/7360084 Linux 的输入子系统不仅支持鼠 ...

  10. ubuntu 里切换 gcc,g++ 的版本

    https://askubuntu.com/questions/26498/choose-gcc-and-g-version https://stackoverflow.com/questions/7 ...