POJ1195 Mobile phones【树状数组】【二维】
来源:互联网 发布:vb 打开网页 编辑:程序博客网 时间:2024/05/16 04:48
题目链接:
http://poj.org/problem?id=1195
题目大意:
给出一个N*N的矩阵,初始化都为0,坐标从(0,0)开始。有三个操作:
命令1:1 x y w;将坐标为(x,y)处的点值增加w
命令2:2 x1 y1 x2 y2;询问左下角坐标为(x1,y1)、右上角坐标为(x2,y2)的矩阵和是多少
命令3:3;不需要操作,退出。
思路:
二位树状数组单点更新,区间求值的简单题。直接做就可以了。最后求矩阵和的时候考虑容斥定理。
即ans = Query(x1-1,y1-1)-Query(x1-1,y2)-Query(x2,y1-1)+Query(x2,y2)。
AC代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#define LL __int64using namespace std;const int MAXN = 1100;int Tree[MAXN][MAXN],N = 1025;int Lowbit(int x){ return x & (-x);}void Update(int x,int y,int w){ for(int i = x; i <= N; i += Lowbit(i)) for(int j = y; j <= N; j += Lowbit(j)) Tree[i][j] += w;}LL Query(int x,int y){ LL sum = 0; for(int i = x; i > 0; i -= Lowbit(i)) for(int j = y; j > 0; j -= Lowbit(j)) sum += Tree[i][j]; return sum;}int main(){ int op,n; while(~scanf("%d%d",&op, &n)) { memset(Tree,0,sizeof(Tree)); while(~scanf("%d",&op) && op != 3) { if(op == 1) { int x,y,w; scanf("%d%d%d",&x,&y,&w); Update(x+1,y+1,w); } else if(op == 2) { int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); x1++,y1++,x2++,y2++; printf("%I64d\n",Query(x1-1,y1-1)-Query(x1-1,y2)-Query(x2,y1-1)+Query(x2,y2)); } } } return 0;}
0 0
- POJ1195 Mobile phones, 二维树状数组
- poj1195 Mobile phones 二维树状数组
- POJ1195--Mobile phones--二维树状数组
- poj1195 mobile phones 【二维树状数组】
- POJ1195 Mobile phones 【二维树状数组】
- poj1195--Mobile phones(二维树状数组)
- poj1195 Mobile phones 二维树状数组
- POJ1195 Mobile phones【树状数组】【二维】
- POJ1195:Mobile phones(二维树状数组)
- POJ1195 Mobile phones 二维树状数组
- (POJ1195)Mobile phones <二维树状数组>
- poj1195 Mobile phones(二维树状数组)
- poj1195~Mobile phones(二维树状数组)
- poj1195 Mobile phones(二维树状数组)
- POJ1195 Mobile phones(树状数组)
- [树状数组] poj1195 Mobile phones
- POJ1195 Mobile phones 二维树状数组 更新节点,查询区域
- POJ1195 Mobile phones(简单二维树状数组)
- php jquery的无刷新验证和提交
- [Spring Reference] P Ⅰ.Spring框架综述/1.Spring框架介绍/1.2 Spring框架模块
- 我面试遇到的C语言中单链表相关的操作粗浅实现
- 菜鸟学安卓Log.v(“第四篇”)——第一个安卓程序及DDMS视图和adb常用命令
- Android手机tcpdump抓包
- POJ1195 Mobile phones【树状数组】【二维】
- LeetCode 100: Same Tree
- Matlab字符串处理
- OC拼音库
- java.util.Date和java.sql.Date的区别和相互转化
- mac 安装 gdb
- leetcode:Maximal Rectangle
- hhuc-acm训练深搜b
- 获取客户端ip的方式(适用于公网与局域网)