단일 업데이트 라인 트 리

4759 단어 데이터 구조
선분 수 는 강 한 (멍청 한) 데이터 구조 이지 만 블 로 거들 은 정말 지루 해서 이런 강 한 (멍청 한) 데이터 구조 (블 로 거들 N 년 전에 이런 데이터 구 조 를 파악 했다) 를 묵묵히 해 볼 수 밖 에 없다.그러나 블 로 거들 은 공 산 (공장) 주의 사업 을 위해 마침내 이 코드 를 썼 다.
/*************************************************************************
    > File Name: \LJF\    \ \   \      .cpp
    > Author: ljf_cnyali
    > Mail: [email protected] 
    > Last modifiedz: 2017-02-2 11:49
    > Description: This is a large group of God's program information.
 ************************************************************************/

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define REP(i, a, b) for(int i = (a), _end_ = (b);i <= _end_; ++ i)
#define mem(a) memset((a), 0, sizeof(a))
#define str(a) strlen(a)
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1

const int maxn = 10000;

int n, m;

int Tree[maxn << 2];

void pushup(int rt) {
    Tree[rt] = Tree[rt << 1] + Tree[rt << 1 | 1];   
}

void Bulid(int l, int r, int rt) {
    if(l == r) {
        Tree[rt] = 0;
        return;
    }
    int mid = (l + r) >> 1;
    Bulid(lson);
    Bulid(rson);
    pushup(rt);
}

void update(int pos, int val, int l, int r, int rt) {
    if(l == r) {
        Tree[rt] += val;
        return;
    }   
    int mid = (l + r) >> 1;
    if(pos <= mid)
        update(pos, val, lson);
    else
        update(pos, val, rson);
    pushup(rt);
}

int query(int L, int R, int l, int r, int rt) {
    if(L <= r && r <= R)
        return Tree[rt];
    int mid = (l + r) >> 1;
    int ret = 0;
    if(L <= mid)
        ret += query(L, R, lson);
    if(R > mid)
        ret += query(L, R, rson);
    return ret;
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif


    return 0;
}

좋은 웹페이지 즐겨찾기