博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1195-Mobile phones
阅读量:6115 次
发布时间:2019-06-21

本文共 1138 字,大约阅读时间需要 3 分钟。

链接:

题意:

给一个S*S的矩阵,有两种操作,给(x,y)位置增加一个值,和求一个内部矩形的和。

思路:

二维树状数组,先对每行来一个一维的树状数组,

再对行来一个树状数组

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const int MAXN = 2000;int c[MAXN][MAXN];int n, op;int Lowbit(int x){ return x&(-x);}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; } }}int Sum(int x, int y){ int res = 0; for (int i = x;i > 0;i -= Lowbit(i)) { for (int j = y;j > 0;j -= Lowbit(j)) { res += c[i][j]; } } return res;}int main(){ scanf("%d%d", &op, &n); while (~scanf("%d", &op)) { if (op == 3) break; if (op == 1) { int x, y, v; scanf("%d%d%d", &x, &y, &v); x++, y++; Update(x, y, v); } if (op == 2) { int x1, y1, x2, y2; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); x1++, y1++, x2++, y2++; printf("%d\n", Sum(x2, y2) - Sum(x1-1, y2) - Sum(x2, y1-1) + Sum(x1-1, y1-1)); } } return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10700465.html

你可能感兴趣的文章
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
android studio修改新项目package名称
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Hadoop2.5.0 搭建实录
查看>>
实验吧 recursive write up
查看>>
High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
查看>>
go test命令參数问题
查看>>
linux 搜索文本
查看>>
超实用Mac软件分享(二)
查看>>
Android JSON数据解析
查看>>