POJ(1195)(单点修改,区间查询)(二维)
题目大意
给定一个N*N的网格,刚开始每个网格的值都是0,接下来会对这些网格进行操作,有一下两种操作:
1、”X Y A“对网格C[x][y]增加A
2、”L B R T“ 查询所有(L<=X<=R,B<=Y<=T)的网格],并返回它们的总和
如果是针对于单点修改,那是比区间修改好打很多,因为这个只需要将区间拆分成许多个树状数组就可以了,
然后修改的时候将树状数组修改,十分好理解的。
查询的话就是二维前缀和的查询,然后就可以了。
1 #include<cstdio> 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cmath> 6 #define N 1057 7 using namespace std; 8 9 int n,k; 10 int a[N][N]; 11 12 int lowbit(int x) 13 { 14 return x&(-x); 15 } 16 void add(int x,int y,int z) 17 { 18 for (int i=x;i<=n;i+=lowbit(i)) 19 for (int j=y;j<=n;j+=lowbit(j)) 20 a[i][j]+=z; 21 } 22 int query(int x,int y) 23 { 24 int res=0; 25 for (int i=x;i>=1;i-=lowbit(i)) 26 for (int j=y;j>=1;j-=lowbit(j)) 27 res+=a[i][j]; 28 return res; 29 } 30 int main() 31 { 32 while(scanf("%d",&k)) 33 { 34 if (k==0) 35 { 36 scanf("%d",&n); 37 for (int i=1;i<=n;i++) 38 for (int j=1;j<=n;j++) 39 a[i][j]=0; 40 } 41 if (k==1) 42 { 43 int x,y,z; 44 scanf("%d%d%d",&x,&y,&z); 45 x++,y++; 46 add(x,y,z); 47 } 48 if (k==2) 49 { 50 int x1,x2,y1,y2; 51 scanf("%d%d%d%d",&x1,&y1,&x2,&y2); 52 x1++,x2++,y1++,y2++; 53 cout<<query(x2,y2)+query(x1-1,y1-1)-query(x1-1,y2)-query(x2,y1-1)<<endl; 54 } 55 if (k==3) break; 56 } 57 }
转载于:https://www.cnblogs.com/fengzhiyuan/p/7573275.html
POJ(1195)(单点修改,区间查询)(二维)相关推荐
- POJ 1195 Mobile phones【 二维树状数组 】
题意:基础的二维数组,注意 0 + lowbit(0)会陷入无限循环----- 之前做一道一维的一直tle,就是因为这个-------------------------- 1 #include< ...
- P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
题目链接:点击进入 题目 思路深入学习 树状数组实现-> 单点修改 + 区间查询 c [ i ] = a ( i - 2 ^ k + 1 ) + - + a [ i ] ( 设节点编号为 i , ...
- 自定义/修改微信二维码样式
在写项目的时候遇到的一个需求,登录和注册都可以通过扫描微信的二维码来实现,但是在做的时候发现微信有一些它自带的样式,并且无法通过CSS直接修改. 通过查微信的开发者文档发现是支持修改的 wxHandl ...
- 线段树的建树 单点修改 区间查询
(未经允许,严禁抄袭转载)(若有错误,请多多指教) 看了这张图后,大家可能明白建树的意思了 看代码以及注释 #include<bits/stdc++.h> using namespace ...
- 线段树模板1(例题BZOJ1012)单点修改+区间查询
---恢复内容开始--- 之所以这么迟才发是因为,这道题调了好久好久,结果发现是输入错误了..... 题目链接:http://www.lydsy.com/JudgeOnline/problem.php ...
- 树状数组模板1——单点修改区间查询
树状数组的模板,修改单点的值,查询某个区间 1 #include<cstdio> 2 #include<cctype> 3 using namespace std; 4 5 i ...
- Android 修改zxing二维码样式
主要修改onDraw方法里面的属性-- /*** This view is overlaid on top of the camera preview. It adds the viewfinder ...
- 【POJ - 2019】Cornfields(二维st表,模板)
题干: FJ has decided to grow his own corn hybrid in order to help the cows make the best possible milk ...
- HDU1754 I Hate It (线段树单点修改+区间查询)
题目链接:传送门 解题思路:从题目中我们很明显知道只有两种操作,第一种是查询\([A,B]\)范围内学生成绩的最大值,典型的RMQ,第二种操作是将A的成绩改为B,而不是改为B的成绩,请仔细体会.(当然 ...
- 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结
文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...
最新文章
- NYOJ 题目528 找球号(三)
- ieda 远程调试hive_idea 远程调试
- 一文读懂RPA与BPM的区别和联系
- lenos快速开发脚手架
- 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?
- 利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II
- 汇编语言和C语言的比较
- JDK API 1.6.0中文版零C币纯分享,直接下载即可。
- 鲸会务,多场景覆盖数字化会议管家
- JAVA实现GIF添加水印
- 手机技巧之扩展内存的检测以及修复。
- Unity统计代码行数脚本
- Xiuno修罗轻论坛仿知乎蓝简约响应式主题模板1.7+自适应PC+WAP端
- vs2017\vs2019 VGG19处理cifar-10数据集的TensorFlow实现
- 关闭Nao机器人自带的摔倒保护
- 饥荒联机版连不上服务器_饥荒本地联机|饥荒联机版无法连接到klei服务器怎么回事_234游戏网...
- Java 实例-打印图形
- 基于Bert的图书分类项目
- simId(SIM卡应用)
- Mvp+Okhttp+Event 传值