题意:这道题目只是题意自己就去理解了半天,大概题意如下:给出i一个n*n的矩阵,初始化为均为0,还有关于这个矩阵的几种操作,操作如下:命令1:(X Y A)对位于坐标(X Y)的值加A;命令2:(L B R T)求出位于L<=x<=R,B<=y<=T的值的和;命令3:退出不做任何操作。
思路分析如下:二维树状数组,典型的动态操作题目。查询子矩阵(x,y,xx,yy)的元素和,注意一下就可以了:sum(xx, yy)-sum(x-1, yy)-sum(xx, y-1)+sum(x-1,y-1);
代码如下:
#include<iostream>
using namespace std;
const int Max = 1030;
int row, col, ar[Max][Max];
int lowbit(int x)
{
return x & (-x);
}
void add(int i, int j, int w)
{
int tmpj;
while(i <= row)
{
tmpj = j;
while(tmpj <= col)
{
ar[i][tmpj] += w;
tmpj += lowbit(tmpj);
}
i += lowbit(i);
}
}
int sum(int i, int j)
{
int tmpj, ans = 0;
while(i > 0)
{
tmpj = j;
while(tmpj > 0)
{
ans += ar[i][tmpj];
tmpj -= lowbit(tmpj);
}
i -= lowbit(i);
}
return ans;
}
int main()
{
int n, ord, x, y, xx, yy, w;
while(scanf("%d%d", &ord, &n) != EOF)
{
memset(ar, 0, sizeof(ar));
row = col = n;
while(scanf("%d", &ord) && ord != 3)
{
if(ord == 1)
{
scanf("%d%d%d", &x, &y, &w);
x++, y++; // 二维的其实下标为[1][1],这个要记得。
add(x, y, w);
}
else
{
scanf("%d%d%d%d", &x, &y, &xx, &yy);
x ++, y ++, xx ++, yy ++;
int ans = sum(xx, yy)-sum(x-1, yy)-sum(xx, y-1)+sum(x-1,y-1);
printf("%d\n", ans);
}
}
}
return 0;
}
分享到:
相关推荐
在本篇中,我们将深入学习二维树状数组的应用,并通过解决POJ 1195问题来实践这一概念。 POJ 1195题目要求我们计算一个二维矩阵中的子矩阵之和。这正是二维树状数组的优势所在,因为我们可以快速地对矩阵的任意矩形...
* 树状树组:例如 poj1195、poj3321。 * RMQ:例如 poj3264、poj3368。 * 并查集的高级应用:例如 poj1703、poj2492。 * KMP 算法:例如 poj1961、poj2406。 4. 搜索: * 最优化剪枝和可行性剪枝。 * 搜索的...
- (poj1195, poj3321):将一种数据结构嵌套在另一种数据结构中。 4. **区间最大值查询**: - (poj3264, poj3368):如何快速获取指定区间内的最大值。 5. **后缀数组/后缀自动机**: - (poj1703, 2492):用于...
poj2528、poj2777等是线段树的题目,poj2482、poj2352等涉及平衡树,poj1195、poj3321则训练了树状数组。 5. **搜索算法的优化**:poj1699、poj3411等训练搜索技巧和剪枝方法,poj3373、poj1691则介绍了记忆化搜索。...
- 推荐题目:[poj1195](https://vjudge.net/problem/POJ-1195)、[poj3321](https://vjudge.net/problem/POJ-3321) - 后缀数组可以高效地解决字符串相关问题。 4. **区间查询** - 推荐题目:[poj3264]...
3. **并查集**:用于处理不相交集合的问题(poj1195, poj3321)。 4. **区间查询**:如RMQ问题(poj3264, poj3368)。 5. **字符串匹配**:如KMP算法(poj1961, poj2406)。 ### 十三、进阶算法 1. **组合优化**:...
+ poj1195, poj3321 * RMQ + poj3264, poj3368 * 并查集的高级应用 + poj1703, poj2492 * KMP算法 + poj1961, poj2406 四、搜索 * 最优化剪枝和可行性剪枝 * 搜索的技巧和优化 + poj3411, poj1724
- 示例题目:poj1195, poj3321 - **区间查询(RMQ)** - 示例题目:poj3264, poj3368 - **后缀数组** - 示例题目:poj1703, poj2492 - **KMP算法** - 示例题目:poj1961, poj2406 #### 高级动态规划 1. **...
- **示例题目**: POJ 3267, POJ 1836, POJ 1260, POJ 2533, POJ 3176, POJ 1080, POJ 1159 - **注意事项**: 理解每种模型的状态定义和转移方程。 #### 六、数学 **1. 组合数学** - **定义**: 研究组合结构的...
3. **差分约束系统**(如poj1195, poj3321):解决变量间的关系约束问题,适用于资源分配、时间表编排等领域。 4. **RMQ(Range Minimum Query)**(如poj3264, poj3368):快速查询区间内的最小值,适用于数据压缩...
2. POJ1195【基础】: 这是一个二维矩阵的操作问题,树状数组在这里扩展到了二维,称为二维树状数组或棋盘树。同样,它支持区间查询和修改。对于矩阵中的每个元素,可以通过二维树状数组在常数时间内完成子矩阵的...
### ACM北大训练知识点详解 ... - poj1195: 涉及树状树组的应用。 以上内容涵盖了ACM竞赛中涉及到的主要算法和数据结构知识点,对于初学者来说是非常宝贵的学习资料。通过不断练习和理解这些知识点,可以...
1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 ...1195 1207 1218 1221 1251 1256 1258 1276 1287 1298 1306 1308 1316 1321 1322 1323 1324 1338 1354 1376 1401 1416 1423 1426 1455 1458 ...
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 ...1195 1200 1201 1207 1218 1226 1251 1256 1258 1260 1273 1274 1276 1283 1298 1305 1306 1308 1315 1316 1319 1321 1323 1324 1325 1328 ...
北京大学ACM题库分类是适合想做ACM题的人的题目分类,分类详细,涵盖了POJ(PKU ACM Online Judge)上的题目分类。该分类涵盖了多种算法和数据结构,包括排序、搜索、回溯、遍历、历法、枚举、数据结构的典型算法、...
POJ(Peking University Online Judge)是一个广受欢迎的在线裁判系统,提供大量的算法题目供参赛者练习。 **重要性:** - **理解比赛规则:** 对于ACM竞赛的基本规则、评分标准等有基本了解。 - **掌握基础算法:*...