본문 바로가기
PS/기본구현

세그먼트 트리 코드

by jaehoonChoi 2022. 8. 7.

아래 코드에서 적절히 트리의 식만 변형해주면 구간 최대,최소,합,곱 세그트리를 만들어줄 수 있다.

세그트리는 복붙보단 매번 직접 짜는걸 추천한다.  

[ Code ] 

const int MAX = 100001;
struct segment_tree {
	int tree[4 * MAX];
	void upd(int node, int s, int e, int idx, int v) {
		if (idx<s || idx>e) return;
		if (s == e) {
			tree[node] = v;
			return;
		}
		int m = (s + e) / 2;
		upd(2 * node, s, m, idx, v);
		upd(2 * node + 1, m + 1, e, idx, v);
		tree[node] = tree[2 * node] + tree[2 * node + 1];
	}
	int query(int node, int s, int e, int qs, int qe) {
		if (s > qe || e < qs) return 0;
		if (qs <= s && e <= qe) return tree[node];
		int m = (s + e) / 2;
		int L = query(2 * node, s, m, qs, qe);
		int R = query(2 * node + 1, m + 1, e, qs, qe);
		return R + L;
	}
}seg;

'PS > 기본구현' 카테고리의 다른 글

FFT 코드  (0) 2022.08.23
플로우 - Dinic, Edmonds-Karp 알고리즘  (0) 2022.08.08
레이지 프로퍼게이션 코드  (0) 2022.08.07
선분교차판정 코드 (세 점 일직선 포함)  (0) 2022.08.07

댓글