二维树状数组--hdu1892

题意

二维书架上原本有1本书

T组样例,四种操作,search,add,del,move

书架上的书小于del的值时,取完该格子的书即可

查询操作用二维的容斥推

由于格子取值可以等于0,故下标都+1

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <sstream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <iomanip>
#include <stack>using namespace std;typedef long long LL;
const int INF = 0x3f3f3f3f;
const int N = 1e3 + 5;
const int MOD = 1e9 + 9;
const double pi = 3.1415926;#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1
#define F(i, l, r) for(int i = l;i <= (r);++i)
#define RF(i, l, r) for(int i = l;i >= (r);--i)int sum[N << 1][N << 1], p[N][N];
int lowbit(int x) {return x & (-x);}
void change(int x, int y, int num)
{for(int i = x;i <= N;i += lowbit(i))for(int j = y;j <= N;j += lowbit(j))sum[i][j] += num;
}int query(int x, int y)
{int ret = 0;for(int i = x;i;i -= lowbit(i))for(int j = y;j;j -= lowbit(j))ret += sum[i][j];return ret;
}int main()
{//freopen("in.txt", "r", stdin);int T;cin >> T;for(int cas = 1;cas <= T;++cas){cout << "Case " << cas << ":" << endl;for(int i = 1;i < N;++i)for(int j = 1;j < N;++j){sum[i][j] = lowbit(i) * lowbit(j);p[i][j] = 1;}int Q;cin >> Q;while(Q--){string s;int a, b, c, d, e;cin >> s;if(s == "A"){cin >> a >> b >> c;a++;b++;p[a][b] += c;change(a, b, c);}else if(s == "S"){cin >> a >> b >> c >> d;a++;b++;c++;d++;if(a > c) swap(a, c);if(b > d) swap(b, d);cout << query(c, d) - query(a - 1, d) - query(c, b - 1) + query(a - 1, b - 1) << endl;}else if(s == "D"){cin >> a >> b >> c;a++;b++;c = min(c, p[a][b]);p[a][b] -= c;change(a, b, -c);}else{cin >> a >> b >> c >> d >> e;a++;b++;c++;d++;e = min(e, p[a][b]);p[a][b] -= e;p[c][d] += e;change(a, b, -e);change(c, d, e);}}}return 0;
}

转载于:https://www.cnblogs.com/shuizhidao/p/10859108.html

二维树状数组--hdu1892相关推荐

  1. hdu 1892二维树状数组

    这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...

  2. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  3. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】

    树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...

  4. 【二维树状数组】See you~

    https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/F [题意] 给定一个矩阵,每个格子的初始值为1.现在可以对矩阵有四种操作: A ...

  5. POJ_1195 Mobile phones 【二维树状数组】

    题目链接:http://poj.org/problem?id=1195 纯纯的二维树状数组,不解释,仅仅须要注意一点,由于题目中的数组从0開始计算,所以维护的时候须要加1.由于树状数组的下标是不能为1 ...

  6. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分

    题目:https://www.luogu.org/problemnew/show/P1527 不难想到(?)可以用二维树状数组.但维护什么?怎么查询是难点. 因为求第k小,可以考虑记权值树状数组,把比 ...

  7. 二维树状数组 BZOJ 1452 [JSOI2009]Count

    题目链接 裸二维树状数组 #include <bits/stdc++.h>const int N = 305; struct BIT_2D {int c[105][N][N], n, m; ...

  8. HDU-4456 Crowd 二维树状数组+坐标转换

    题意:给定一个N*N的网格,现在M组操作,一种操作时改变网格上的某个单点的权值,另外一种操作是求到一点曼哈顿距离为小于等于k的所有的权值和,初始化网格所有点的权值为0. 解法:这题如果没有那些特定的条 ...

  9. poj 1195(二维树状数组)

    解题思路:这是一道很裸的二维树状数组 AC: #include<stdio.h> #include<string.h> #define N 1100 int c[N][N],n ...

最新文章

  1. 如何用初中知识理解机器学习到底在干什么事情
  2. 使用tcpwrapper实现访问控制功能
  3. r语言如何写入一个excel_R语言如何进行聚类分析?
  4. oracle批处理脚本学习总结
  5. UML图系列——UML模型图的构成
  6. stm32 web ajax,STM32的WEB服务器怎么返回AJAX的JSON数据格式的?求教!
  7. Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
  8. java jwt 验证_教程:用Java创建和验证JWT
  9. 基于.NET实现数据挖掘--关联规则分析算法
  10. python爬取数据库数据类型_python中从搭建Mysql平台到爬取数据一站式全部完成
  11. java 反射 接口_Java 怎么通过反射获取并实现这个类里面的接口,并且实现接口中的方法...
  12. JAVA 编程练习题
  13. javaWeb连接数据库实现简单的登陆注册功能
  14. 〖教程〗Winrm远程命令/WinrmCmd/端口复用后门/Windows密码爆破
  15. 根据图片地址上传图片
  16. ESP32+TFT屏幕连接无线局域网投屏
  17. VIM的初学配置文件
  18. 解决电信只能在唯一的电脑上拨号上网的问题(MAC克隆)
  19. 【第59题】输入、输出系列7-压缩文件相关技术2
  20. Win10夜间模式无法关闭解决方法

热门文章

  1. CANopen dsp402 对象字典 603F 错误码
  2. SIFT四部曲之——极值检测和定位
  3. postgresql 数据库 等保审计 遇到的问题与办法 (整理)
  4. 有限公司如何设立董事会
  5. WIN7下Virtualbox虚拟Ubuntu共享文件夹设置
  6. 花拳绣腿的「融360」:金融AI第一股今安在?|| 新芒X
  7. SAAS 技术栈回顾
  8. numpy 图片水印去除
  9. Tableau 仪表板例子1
  10. 南京恩博:绿水青山的守卫者