poj 1195 Mobile phones 【二维树状数组】
2016-03-23 00:06
459 查看
题目链接:poj 1195 Mobile phones
题意:n∗n矩阵。操作
1、0n 清空矩阵元素为0,建立n∗n矩阵;
2、1xyd 矩阵元素(x,y)加d;
3、2x1y1x2y2求解以(x1,y1)为左上角(x2,y2)为右下角的矩阵元素和。
单点修改、求和时间复杂度O(logn∗logn)。
AC代码:
题意:n∗n矩阵。操作
1、0n 清空矩阵元素为0,建立n∗n矩阵;
2、1xyd 矩阵元素(x,y)加d;
3、2x1y1x2y2求解以(x1,y1)为左上角(x2,y2)为右下角的矩阵元素和。
单点修改、求和时间复杂度O(logn∗logn)。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #include <stack> #define PI acos(-1.0) #define CLR(a, b) memset(a, (b), sizeof(a)) #define fi first #define se second #define ll o<<1 #define rr o<<1|1 using namespace std; typedef long long LL; typedef pair<int, int> pii; const int MAXN = 1100 + 10; const int pN = 1e6;// <= 10^7 const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; void add(LL &x, LL y) { x += y; x %= MOD; } LL C[MAXN][MAXN]; int n; int lowbit(int x) { return x & (-x); } void add(int x, int y, int d) { while(x <= n) { int sy = y; while(sy <= n) { C[x][sy] += d; sy += lowbit(sy); } x += lowbit(x); } } LL Sum(int x, int y) { LL ans = 0; while(x > 0) { int sy = y; while(sy > 0) { ans += C[x][sy]; sy -= lowbit(sy); } x -= lowbit(x); } return ans; } int main() { while(1) { int op; scanf("%d", &op); int a, b, c, d; if(op == 0) { scanf("%d", &n); CLR(C, 0); } else if(op == 1) { scanf("%d%d%d", &a, &b, &c); a++; b++; add(a, b, c); } else if(op == 2) { scanf("%d%d%d%d", &a, &b, &c, &d); a++; b++; c++; d++; printf("%lld\n", Sum(c, d) - Sum(a-1, d) - Sum(c, b-1) + Sum(a-1, b-1)); } else { return 0; } } return 0; }
相关文章推荐
- linux常用命令
- 穷举二进制
- 锁屏技术哪家强,谈安卓锁屏的几个问题
- MySQL与Oracle的语法区别详细对比 (转)
- HDU 1176 经典dp
- 在 Linux 上使用开源软件创建 SDN
- 打败「有人设」的,是「有人性」的产品
- 在windows系统中实现python3安装lxml
- Eclipse中Python开发环境搭建简单教程
- python各种语言间时间的转化实现代码
- python 时间戳与格式化时间的转化实现代码
- python 回调函数和回调方法的实现分析
- Zend Framework教程之Zend_Config_Xml用法分析
- PHP正则获取页面所有图片地址
- Zend Framework教程之Zend_Config_Ini用法分析
- php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
- Zend Framework开发入门经典教程
- SSO单点登录的PHP实现方法(Laravel框架)
- mysql数据库隔离级别详解
- TP-LINK telnet远程 重启路由器(转)