标签:des style http color os io for ar art
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 (二维树状数组)
标签:des style http color os io for ar art
原文地址:http://blog.csdn.net/u013923947/article/details/38754987