标签:ide square for san namespace lan sam fine receives
Description
Input
Output
Sample Input
0 4 1 1 2 3 2 0 0 2 2 1 1 1 2 1 1 2 -1 2 1 1 2 3 3
Sample Output
3 4
二维树状数组求和与改动,从一维能够扩展到二维。
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <set> #include <stack> #include <cctype> #include <algorithm> #define lson o<<1, l, m #define rson o<<1|1, m+1, r using namespace std; typedef long long LL; const int mod = 99999997; const int MAX = 1000000000; const int maxn = 100005; int ca, s, op; int c[1100][1100]; void add(int i, int j, int v) { while(i <= s) { int y = j; while(y <= s) { c[i][y] += v; y += y&-y; } i += i&-i; } } int query(int i ,int j) { int ans = 0; while(i > 0) { int y = j; while(y > 0) { ans += c[i][y]; y -= y&-y; } i -= i&-i; } return ans; } int main() { cin >> ca >> s; while(1) { scanf("%d", &op); if(op == 1) { int a, b, v; scanf("%d%d%d", &a, &b, &v); add(a+1, b+1, v); } else if(op == 2) { int x1, x2, y1, y2; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); int ans = query(x2+1, y2+1) + query(x1, y1) - query(x2+1, y1) - query(x1, y2+1); printf("%d\n", ans); } else break; } return 0; }
POJ 1195 Mobile phones (二维树状数组)
标签:ide square for san namespace lan sam fine receives
原文地址:http://www.cnblogs.com/blfbuaa/p/7225460.html