博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1195-Mobile phones
阅读量:6202 次
发布时间: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

你可能感兴趣的文章
day13 知识点串讲
查看>>
day32 sed-awk
查看>>
猜猜看,什么样的3D打印机能成为爆款?
查看>>
JSP 标准标签库(JSTL)
查看>>
linux PS1 提示符定义
查看>>
javascript与php实现openssl加密/解密
查看>>
春节后的求职高峰期,熟悉这些UI设计面试题帮你快速拿到offer
查看>>
【Git 第6课】 文件状态
查看>>
信息安全与Linux系统
查看>>
Java SPI及Demo
查看>>
tkinter模块常用参数(python3)
查看>>
在MAC平台下使用Eclipse出现了中文乱码
查看>>
OS X系统下通过终端命令搜索文件并导出列表
查看>>
学平面设计需要什么基础呢?
查看>>
来自AJPFX的二分法查找
查看>>
【配置模板】grunt配置
查看>>
我的友情链接
查看>>
npm 镜像
查看>>
伪点击事件案列
查看>>
Spring MVC
查看>>