HDU 1892 See you~ 【 二维树状数组 】
题意:二维的树状数组
注意的有三个地方,
输入进去的坐标都加1,防止lowbit(0) + 0造成死循环
还有就是询问矩形面积的时候,输入进去的x1,x2,y1,y2,可能不是正对角线,要转化成正对角线
初始化的时候,是每个点的值为1
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include <cmath>
- #include<stack>
- #include<vector>
- #include<map>
- #include<set>
- #include<queue>
- #include<algorithm>
- using namespace std;
- typedef long long LL;
- const int INF = (<<)-;
- const int mod=;
- const int maxn=;
- int a[][],c[][];
- int lowbit(int x){ return x & (-x);}
- int sum(int x,int y){
- int ret=;
- for(int i=x;i>;i-=lowbit(i))
- for(int j=y;j>;j-=lowbit(j))
- ret+=c[i][j];
- return ret;
- }
- void add(int x,int y,int d){
- for(int i=x;i<;i+=lowbit(i))
- for(int j=y;j<;j+=lowbit(j))
- c[i][j]+=d;
- }
- void init(){
- memset(c,,sizeof(c));
- for(int i=;i<;i++){
- for(int j=;j<;j++){
- add(i,j,);
- a[i][j] = ;
- }
- }
- }
- int main(){
- int T;
- int kase = ;
- scanf("%d",&T);
- while(T--){
- printf("Case %d:\n",++kase);
- init();
- int m;
- scanf("%d%*c",&m);
- while(m--){
- char cmd;
- scanf("%c",&cmd);
- if(cmd == 'S') {
- int x,xx,y,yy,x1,x2,y1,y2;
- scanf("%d%d%d%d%*c",&x,&y,&xx,&yy);
- x++;y++;xx++;yy++;
- x1 = min(x,xx);x2 = max(x,xx);
- y1 = min(y,yy); y2 = max(y,yy);
- int ans=;
- ans += sum(x1-,y1-);
- ans -= sum(x1-,y2);
- ans -= sum(x2,y1-);
- ans += sum(x2,y2);
- printf("%d\n",ans);
- }
- if(cmd == 'A'){
- int x1,y1,n1;
- scanf("%d%d%d%*c",&x1,&y1,&n1);
- x1++;y1++;
- a[x1][y1]+=n1;
- add(x1,y1,n1);
- }
- if(cmd == 'D'){
- int x1,y1,n1;
- scanf("%d%d%d%*c",&x1,&y1,&n1);
- x1++;y1++;
- n1 = min(n1,a[x1][y1]);
- a[x1][y1]-=n1;
- add(x1,y1,-n1);
- }
- if(cmd == 'M'){
- int x1,y1,x2,y2,n1;
- scanf("%d%d%d%d%d%*c",&x1,&y1,&x2,&y2,&n1);
- x1++;y1++;x2++;y2++;
- n1=min(n1,a[x1][y1]);
- a[x1][y1]-=n1;a[x2][y2]+=n1;
- add(x1,y1,-n1);
- add(x2,y2,n1);
- }
- }
- }
- return ;
- }
HDU 1892 See you~ 【 二维树状数组 】的更多相关文章
- HDU 1892(书架统计 二维树状数组)
题意是在二维平面上在一些位置上进行数据的增删改查操作,使用树状数组(了解树状数组点这里) 原来的树状数组在求区间和时是 sum( x, y ) = getsum( y ) - getsum( x - ...
- HDU 1892 See you~ (二维树状数组)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 See you~ Problem Description Now I am leaving h ...
- 【 HDU - 4456 】Crowd (二维树状数组、cdq分治)
BUPT2017 wintertraining(15) #5A HDU 4456 题意 给你一个n行n列的格子,一开始每个格子值都是0.有M个操作,p=1为第一种操作,给格子(x,y)增加z.p=2为 ...
- hdu 2642 Stars 【二维树状数组】
题目 题目大意:Yifenfei是一个浪漫的人,他喜欢数天上的星星.为了使问题变得更容易,我们假设天空是一个二维平面,上面的星星有时会亮,有时会发暗.最开始,没有明亮的星星在天空中,然后将给出一些信息 ...
- hdu 5517 Triple(二维树状数组)
Triple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- HDU 5517---Triple(二维树状数组)
题目链接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite mult ...
- HDU 5517 【二维树状数组///三维偏序问题】
题目链接:[http://acm.split.hdu.edu.cn/showproblem.php?pid=5517] 题意:定义multi_set A<a , d>,B<c , d ...
- HDU 5465 Clarke and puzzle Nim游戏+二维树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle Accepts: 42 Submissions: 26 ...
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
Stars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Subm ...
- hdu 2642二维树状数组 单点更新区间查询 模板题
二维树状数组 单点更新区间查询 模板 从零开始借鉴http://www.2cto.com/kf/201307/227488.html #include<stdio.h> #include& ...
随机推荐
- redis模拟消息订阅
使用办法: 订阅端: Subscribe 频道名称 发布端: publish 频道名称 发布内容 客户端例子: redis 127.0.0.1:6379> subscribe news Read ...
- 一个基于React整套技术栈+Node.js的前端页面制作工具
pagemaker是一个前端页面制作工具,方便产品,运营和视觉的同学迅速开发简单的前端页面,从而可以解放前端同学的工作量.此项目创意来自网易乐得内部项目nfop中的pagemaker项目.原来项目的前 ...
- Unity 脚本挂载位置
原则:谁的脚本,挂载到谁身上 1,一般场景中会有个GameController脚本,挂在空物体上. 2,我见很多人脚本习惯挂到Camera上,好吧,不知算不算规范.
- js浏览器下载总结(ios、and、微信、qq)
前段时间做了个项目,里面关于手机移动端下载的问题 开始是判断微信.ios和android系统的下载 因为微信屏蔽点击事件和链接的缘故,需要通过打开新页面来进行下载 ios和android的下载分别为不 ...
- 加减法计算器-java
由于经常进行较大数据的加减法计算,好多计算器都是转换成科学技术法的,所以自己用java写了一个 功能如下: 1,可以输入多个带千位分隔符的数字,进行加减法计算 2,结果展示带千位分隔符 3,结果展示不 ...
- GitHub上传项目,使用desktop(客户端)教程
GitHub上传项目,使用desktop(客户端)教程 搜索“GitHub上传项目”,能得到很多相关的文章教程,里面讲的都特别麻烦,要弄什么ssh之类的,可算是吓坏了我,使我非常的怀疑为什么GitH ...
- 题解 P3978 【[TJOI2015]概率论】
这道题...好像是第一道我自己切出来的黑题... 先说一句,牛顿二项式蒟蒻并不会,可以说是直接套结论. 求诸位老爷轻喷. 这道题用卡特兰数搞. 卡特兰数这玩意从普及组初赛一路考到省选,十分有用. 如果 ...
- mysql数据实时同步到Elasticsearch
业务需要把mysql的数据实时同步到ES,实现低延迟的检索到ES中的数据或者进行其它数据分析处理.本文给出以同步mysql binlog的方式实时同步数据到ES的思路, 实践并验证该方式的可行性,以供 ...
- [AngularJS]Chapter 3 使用AngularJS构建应用程序
本章内容提要: 如何布置AngularJS进行快速开发 开启服务器进行测试 使用Karma进行单元测试用例测试 编译压缩AngularJS进行生产 使用Batarang进行Debug 如何简化开发工作 ...
- 接口測试-HAR
參考文章 雪球的 HttpApi 接口測试框架设计 HAR(HTTP Archive)规范 神器--Chrome开发人员工具(一) HAR是什么 一句话:关于HTTP所有的信息的一种文件保存格式 HA ...