본문으로 건너뛰기
김신건의 로그

Dynamic Segment Tree: 지연 노드 생성

· 수정 · 📖 약 1분 · 123자/단어 #algorithm #data-structure #segment-tree
Dynamic Segtree, Dynamic Segment Tree, 동적 세그

정의

Dynamic Segment Tree 는 값 범위가 매우 크지만 실제 접근 위치가 희소할 때, 필요한 노드만 생성 하는 세그먼트 트리입니다.

공간: O(Q log V), Q = 쿼리 수, V = 값 범위

구조

포인터 기반, 또는 map<int, int> 로 자식 인덱스 관리.

struct Node { long long sum = 0; Node *l = nullptr, *r = nullptr; };

void update(Node*& n, long long lo, long long hi, long long pos, long long v) {
    if (!n) n = new Node();
    if (lo == hi) { n->sum += v; return; }
    long long mid = (lo + hi) / 2;
    if (pos <= mid) update(n->l, lo, mid, pos, v);
    else update(n->r, mid + 1, hi, pos, v);
    n->sum = (n->l ? n->l->sum : 0) + (n->r ? n->r->sum : 0);
}

대안

참고

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기