POJ 1195 Mobile phones
2013-04-15 21:05
302 查看
题目链接:http://poj.org/problem?id=1195
二维树状数组的应用
二维树状数组的应用
#include <cstdio> #include <cstring> #include <cstdlib> const int MAXN = 1200; int S; int C[MAXN][MAXN]; int lowbit( int x ) { return x & -x; } void Add( int x, int y, int add ) { int tpy; while ( x <= S ) { tpy = y; while ( tpy <= S ) { C[x][tpy] += add; tpy += lowbit(tpy); } x += lowbit(x); } return; } int Sum( int x, int y ) { int ret = 0; while ( x > 0 ) { int tpy = y; while ( tpy > 0 ) { ret += C[x][tpy]; tpy -= lowbit(tpy); } x -= lowbit(x); } return ret; } int main() { int op, add; int x1, y1, x2, y2; while( ~scanf( "%d%d", &op, &S ) ) { memset( C, 0, sizeof(C) ); while ( scanf( "%d", &op ), op != 3 ) { if ( op == 1 ) { scanf( "%d%d%d", &x1, &y1, &add ); ++x1, ++y1; Add( x1, y1, add ); } else { 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; }
相关文章推荐
- POJ 1195 Mobile phones 二维线段树
- POJ 1195 Mobile phones 线段树 二维线段树 单点更新 区间求和
- poj 1195 Mobile phones
- POJ 1195 Mobile phones
- poj 1195--Mobile phones
- poj-1195 Mobile phones *
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones
- [树状数组]POJ 1195 Mobile phones
- 【POJ 1195】 Mobile phones (树状数组)
- [POJ 1195] Mobile phones · 树状数组
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones - 二维树状数组/线段树
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones
- POJ 1195 Mobile phones (二维树状数组)
- Poj 1195 Mobile phones
- POJ 1195 Mobile Phones
- poj 1195 Mobile phones
- poj1195 Mobile phones 树状数组