AI Empire Academy
CHUYÊN ĐỀ C++ THỰC CHIẾN

Bài tập Cấu trúc dữ liệu truy vấn đoạn (Segment Tree & BIT) C++

Xử lý các bài toán vừa cập nhật giá trị vừa truy vấn tổng hoặc cực trị đoạn trong thời gian O(log N), đáp ứng dữ liệu lên tới hàng triệu thao tác.

9

bài tập có chấm code

Bài tập theo chuyên đề, có đề bài, ví dụ và starter code riêng.

0

cơ bản

Củng cố nền tảng và làm quen với kỹ thuật cốt lõi.

0

trung bình

Kết hợp nhiều bước suy luận để vận dụng kiến thức.

9

nâng cao

Thử thách tối ưu, cấu trúc dữ liệu và thuật toán chuyên sâu.

Lộ trình thực hành đề xuất

Bước 1

Cây Fenwick (Binary Indexed Tree)

Thao tác bit i & (-i), cập nhật điểm và truy vấn tổng tiền tố trong O(log N).

Bước 2

Cây phân đoạn (Segment Tree)

Xây dựng cây 4*N nút, truy vấn max/min đoạn và cập nhật một điểm.

Bước 3

Kỹ thuật Lazy Propagation

Tối ưu hóa thao tác cập nhật trên cả một đoạn [L, R] trong thời gian O(log N).

Lỗi thường gặp & Cách phòng tránh

•

Khai báo kích thước mảng Segment Tree quá nhỏ (cần tối thiểu 4 * N phần tử).

•

Quên đẩy giá trị lười (push down lazy) xuống các nút con trước khi truy vấn.

Danh sách bài tập thực hành (9 bài)

Trong mỗi mức độ, bài tập được xếp từ dễ nhất đến khó nhất — hãy đi theo số bước.

Nâng cao 9 bài

Thử thách

Thuật toán chuyên sâu: quy hoạch động, đồ thị, cây.

cpp-056Bước 2Nâng cao

Implicit Treap: Thao tác Mảng Động

Cài đặt một mảng động hỗ trợ các thao tác chèn, xóa và đảo ngược đoạn (reverse) bằng cấu trúc dữ liệu Implicit Treap (Cartesian Tree with Random Priorities).

Chuyên sâu

Cấu trúc dữ liệu nâng cao và nhiều bước chứng minh.