Học về Segment Tree
Segment Tree được sử dụng trong trường hợp có nhiều truy vấn phạm vấn phạm vi trên mảng và sửa đổi các phần tử của cùng một mảng. Ví dụ, tìm tổng của tất cả các phần tử trong một mảng từ chỉ số L đến R, hoặc tìm giá trị nhỏ nhất của tất cả các phần tử trong 1 mảng từ chỉ số L đến R. Những vấn đề này có thể được giải quyết dễ dàng với một trong những cấu trúc dữ liệu linh hoạt nhất. Segment Tree. Segment Tree là gì ? Segment Tree cơ bản là một cây nhị phân nhằm lưu trữ một đoạn. Mỗi nút trong Segment Tree đại diện cho một đoạn. Xét mảng A có kích thước N, và 1 cây Segment Tree T tương ứng. 1. Gốc của cây T sẽ đại diện cho cả mảng: A[0:N-1]. 2. Mỗi lá của cây T sẽ đại diện một phần tử A[i] thỏa mãn 0<=i<N. 3. Mỗi nút nút của cây T đại diện cho một đoạn A[i:j] với 0<=i<j<N. Gốc của Segment Tree đại diện cho cả mảng A[0:N-1]. Sau đó nó chia đôi thành một nữa và 2 đứa trẻ của gốc sẽ đại diện cho A[0:(N-1)/2] và A[(N-1)/2+1;(N-1)]. Vì vậy, ở mỗi bước, Segment lại...
Nhận xét
Đăng nhận xét