FPTOJ Problem Set: Danh Mục Bài Tập và Giáo Trình¶
Tài liệu này là mục lục chuẩn học thuật cho toàn bộ hệ thống bài tập thực hành trên FPTOJ. Toàn bộ các bài tập được cấu trúc đồng bộ theo 10 phân nhánh chuyên môn, tương ứng trực tiếp với các chuyên đề lý thuyết trên Wiki.
PHẦN I: NHẬP MÔN VÀ KỸ NĂNG NỀN TẢNG (FOUNDATIONS & BASIC TECHNIQUES)¶
1.1. Nhập môn và Môi trường thực thi¶
Hướng dẫn làm quen hệ thống chấm tự động, luồng nhập xuất dữ liệu và các thao tác cơ bản đầu tiên.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
setup-fibo |
Gia tộc thỏ Bình | ⭐⭐ | Nhập xuất cơ bản | Setup môi trường thi đấu |
setup-game |
Trò chơi chia kẹo | ⭐⭐ | Nhập xuất cơ bản | Setup môi trường thi đấu |
setup-hello |
Lời chào từ An | ⭐ | Nhập xuất cơ bản | Setup môi trường thi đấu |
setup-sum |
An và chiếc hộp quà | ⭐⭐ | Nhập xuất cơ bản | Setup môi trường thi đấu |
setup-triangle |
Mảnh đất hình tam giác | ⭐⭐⭐ | Nhập xuất cơ bản | Setup môi trường thi đấu |
1.2. Phân tích Độ phức tạp thuật toán¶
Ước lượng thời gian chạy, bộ nhớ và tối ưu hóa độ phức tạp thuật toán.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
comp-digits |
Số lượng ước số | ⭐⭐⭐ | Toán học | Độ phức tạp thời gian |
comp-pairs |
Đếm cặp số của An | ⭐⭐ | Toán học | Độ phức tạp thời gian |
comp-pow |
Trò chơi lũy thừa | ⭐⭐ | Toán học | Độ phức tạp thời gian |
comp-subseg |
Dãy con của Việt | ⭐⭐ | Toán học | Độ phức tạp thời gian |
comp-sum |
An và chiếc máy tính | ⭐ | Toán học | Độ phức tạp thời gian |
1.3. Phép toán Bit và Thao tác Bit cơ bản¶
Thao tác trên bit nhị phân, bitmask cơ bản, đếm bit 1 và các bài toán tổ hợp bit.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
bit-count |
Đếm bit 1 | ⭐ | Phép toán bit | Phép toán bit |
bit-power |
Lũy thừa của 2 | ⭐ | Phép toán bit | Phép toán bit |
bit-single |
Số duy nhất | ⭐ | Phép toán bit | Phép toán bit |
bit-subset |
Tập con may mắn | ⭐⭐ | Phép toán bit | Phép toán bit |
fun-clear |
Xóa bit 1 | ⭐ | Phép toán bit | Phép toán bit |
fun-lsb |
Bit thấp nhất | ⭐ | Phép toán bit | Phép toán bit |
fun-maxand |
Cặp AND lớn nhất | ⭐⭐ | Phép toán bit | Phép toán bit |
fun-pairxor |
Cặp XOR lớn nhất | ⭐ | Phép toán bit | Phép toán bit |
fun-subsets |
Đếm tập con | ⭐ | Phép toán bit | Phép toán bit |
1.4. Thuật toán Sắp xếp và Ứng dụng¶
Sắp xếp dữ liệu, hàm so sánh tùy biến, tìm trung vị và các ứng dụng sắp xếp.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
sort-basic |
Sắp xếp dãy số | ⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-closest |
Cặp số gần nhau nhất | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-desc |
Sắp xếp giảm dần | ⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-distinct |
Số lượng giá trị khác nhau | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-inversions |
Đếm số cặp nghịch thế | ⭐⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-median |
Tìm số trung vị | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-meetings |
Lịch họp tối đa | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-pairs |
Ghép cặp mũ bảo hiểm | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-parity |
Sắp xếp chẵn lẻ | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
sort-points |
Xếp hạng học sinh | ⭐⭐ | Thuật toán sắp xếp | Thuật toán sắp xếp |
1.5. Tìm kiếm Nhị phân và Tam phân¶
Tìm kiếm nhị phân trên mảng đã sắp xếp, tìm kiếm nhị phân trên không gian kết quả và tìm kiếm tam phân cực trị hàm lồi.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
bs-basic |
Tìm kiếm cơ bản | ⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-cows |
Bố trí đàn bò | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-factory |
Nhà máy sản xuất | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-first-last |
Đoạn giá trị trùng nhau | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-miss |
Số bị thiếu | ⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-multiplication |
Bảng nhân kì diệu | ⭐⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-split |
Chia mảng tối ưu | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-sqrt |
Căn bậc hai số nguyên | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-upper |
Đếm số ≤ X | ⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
bs-wood |
Máy cưa gỗ tối ưu | ⭐⭐ | Tìm kiếm nhị phân | Tìm kiếm nhị phân |
ts-angle |
Góc tối ưu | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-circle |
Hình tròn | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-convex |
Hàm lồi | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-cover |
Phủ sóng | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-delivery |
Giao hàng | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-distance |
Khoảng cách | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-find-max |
Tìm max đơn | ⭐⭐⭐⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-parabola |
Parabol | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
ts-peak |
Đỉnh núi | ⭐⭐ | Toán học | Tìm kiếm nhị phân |
1.6. Kỹ thuật Hai con trỏ¶
Kỹ thuật duyệt hai con trỏ, cửa sổ trượt và tối ưu hóa không gian tìm kiếm tuyến tính.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
tp-closest |
3 tổng gần nhất | ⭐⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-cntpair |
Đếm cặp tổng ≤ X | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-diff |
Cặp hiệu X | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-ksum |
4Sum | ⭐⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-maxlen |
Đoạn con dài nhất | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-merge |
Trộn hai mảng | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-pairx |
Cặp tổng X | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-same |
Phần tử trùng | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-subk |
Đoạn con K phần tử khác | ⭐⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-subsum |
Đoạn tổng S | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-three |
3Sum | ⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
tp-trap |
Hứng nước | ⭐⭐ | Kỹ thuật hai con trỏ | Kỹ thuật hai con trỏ |
1.7. Đệ quy, Quay lui và Tìm kiếm cục bộ¶
Duyệt toàn bộ không gian nghiệm bằng quay lui, nhánh cận và thuật toán tìm kiếm cục bộ (Local Search).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ls-coloring |
Tô màu | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-find-peak |
Tìm đỉnh | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-hill-1d |
Leo đồi 1D | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-hill-2d |
Leo đồi 2D | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-knapsack |
Ba lô | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-nqueen |
N-Hậu | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-schedule |
Xếp lịch | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-sudoku |
Sudoku | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
ls-tsp |
Người du lịch | ⭐⭐⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-binary |
Xâu nhị phân | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-coin |
Đổi tổng | ⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-comb |
Tổ hợp | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-digit |
Đếm chữ số | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-fact |
Tính giai thừa | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-fibo |
Số Fibonacci | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-gcd |
GCD bằng đệ quy | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-knap |
Knapsack vét cạn | ⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-maze |
Đếm đường đi | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-mcolor |
Tô màu đồ thị | ⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-nqueen |
N-Queens | ⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-partition |
Phân hoạch số | ⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-perm |
Hoán vị | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-power |
Lũy thừa bằng đệ quy | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-subsetsum |
Tổng tập con | ⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-sudoku |
Sudoku | ⭐⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
rec-tower |
Tháp Hà Nội | ⭐⭐ | Đệ quy & Quay lui | Đệ quy và quay lui |
1.8. Kỹ thuật Gặp nhau ở giữa (Meet-in-the-middle)¶
Giảm độ phức tạp thời gian bằng cách chia đôi không gian trạng thái tìm kiếm.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
mitm-balanced |
Chia kẹo - Balanced Partition | ⭐⭐⭐ | Tìm kiếm nhị phân | Meet in the middle |
mitm-closest |
Tập con gần X nhất | ⭐⭐⭐ | Tìm kiếm nhị phân | Meet in the middle |
mitm-knap |
Cái túi - Meet in the Middle | ⭐⭐⭐ | Tìm kiếm nhị phân | Meet in the middle |
mitm-range |
Tập con tổng trong [L, R] | ⭐⭐⭐ | Tìm kiếm nhị phân | Meet in the middle |
mitm-subset-x |
Đếm tập con tổng X | ⭐⭐⭐ | Tìm kiếm nhị phân | Meet in the middle |
1.9. Thuật toán Tham lam¶
Lựa chọn tối ưu cục bộ để đạt tối ưu toàn cục, lập lịch công việc và tối ưu hóa tài nguyên.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
grd-activities |
Ngày hội thể thao | ⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-assign-cookies |
Phát bánh quy | ⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-boats |
Giải cứu hòn đảo | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-candy |
Phát kẹo | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-coin-change |
Đổi tiền cho khách | ⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-gas-station |
Vòng quanh trạm xăng | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-huffman |
Mã hóa văn phòng | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-interval-part |
Xếp phòng học | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-job-deadline |
Xưởng sản xuất | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-knapsack-frac |
Xe tải chở hàng | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-lemonade |
Tiền lẻ nước chanh | ⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-max-subarray |
Đầu tư chứng khoán | ⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-max-units |
Kho hàng xe tải | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-merge-sticks |
Gộp que gỗ | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-min-arrows |
Bong bóng và mũi tên | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-partition-labels |
Chia đoạn ký tự | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-platforms |
Ga tàu hỏa | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-remove-digits |
Số nhỏ nhất | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-two-city |
Đi công tác | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
grd-wiggle |
Dãy zigzag | ⭐⭐ | Thuật toán tham lam | Thuật toán tham lam |
1.10. Lý thuyết Trò chơi và Cắt tỉa Alpha-Beta¶
Trò chơi tổ hợp, đối kháng hai người, trạng thái thắng thua và thuật toán Minimax kết hợp Alpha-Beta.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ab-coin-pick |
Nhặt xu | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-coloring |
Tô màu | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-divisor |
Ước số | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-minimax-basic |
Cây game - Minimax cơ bản | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-prime-game |
Số nguyên tố | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-stone-div |
Chia đá | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-subtract |
Trừ số | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-tree-game |
Game trên cây | ⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
ab-win-game |
Ai thắng | ⭐⭐⭐⭐⭐ | Quy hoạch động | Lý thuyết trò chơi |
PHẦN II: CẤU TRÚC DỮ LIỆU TUYẾN TÍNH VÀ CƠ BẢN (LINEAR & FUNDAMENTAL DATA STRUCTURES)¶
2.1. Mảng cộng dồn và Mảng hiệu (Prefix Sum & Difference Array)¶
Tiền xử lý mảng cộng dồn 1D/2D, mảng hiệu, thuật toán Kadane và truy vấn đoạn.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ps-2d-diff |
Mảng hiệu 2D | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-diff |
Cơn mưa đầu mùa | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-equal |
Kho báu dưới lòng đất | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-grid |
Vườn trái cây | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-kadane |
Sòng bạc may rủi | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-matrix-diff |
Ma trận hiệu | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-max-sub |
Đoạn tổng lớn | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-median-sliding |
Trung vị trượt | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-paint |
Tô hàng rào | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-sub-sum-k |
Đoạn tổng K | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-sum |
Truy vấn tổng | ⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
ps-xor-range |
XOR đoạn | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Mảng, Stack, Prefix Sum |
2.2. Ngăn xếp và Ngăn xếp đơn điệu (Stack & Monotonic Stack)¶
Cấu trúc dữ liệu ngăn xếp, kiểm tra biểu thức ngoặc và Monotonic Stack tìm phần tử kế cận.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
st-balanced |
Ngoặc nhiều loại | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
st-bracket |
Ngoặc đơn vui nhộn | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
st-max-rect |
HCN lớn nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
st-min-stack |
Stack min | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
st-next |
Đội hình thể thao | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
st-sliding-stack |
Stack trượt | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-calc-w-paren |
Tính giá trị biểu thức có ngoặc | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-histogram |
Hình chữ nhật lớn nhất trong biểu đồ | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-infix-eval |
Tính giá trị biểu thức trung tố | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-longest-paren |
Dãy ngoặc đúng dài nhất | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-max-rect-matrix |
Hình chữ nhật lớn nhất trong ma trận nhị phân | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-next-greater |
Phần tử lớn hơn đầu tiên bên phải | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-next-smaller |
Phần tử nhỏ hơn đầu tiên bên phải | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-postfix-eval |
Tính giá trị biểu thức hậu tố | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-prev-greater |
Phần tử lớn hơn đầu tiên bên trái | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-remove-digits |
Xóa K chữ số để được số nhỏ nhất | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-remove-dups |
Xóa ký tự trùng để được xâu nhỏ nhất | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-stock-span |
Stock Span | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-sum-sub-min |
Tổng giá trị nhỏ nhất của các subarray | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-trap-rain |
Tính lượng nước hứng được | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
stk-valid-paren |
Kiểm tra dãy ngoặc đúng | ⭐⭐ | Cấu trúc dữ liệu | Stack nâng cao |
2.3. Hàng đợi và Hàng đợi hai đầu (Queue & Deque)¶
Mô phỏng hàng đợi cơ bản, hàng đợi hai đầu Deque và kỹ thuật duy trì cực trị cửa sổ trượt.
2.4. Danh sách liên kết (Linked List)¶
Thao tác trên danh sách liên kết đơn, liên kết đôi và bài toán Josephus.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ll-basic |
Danh sách liên kết cơ bản | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-cycle |
Phát hiện chu trình | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-josephus |
Josephus | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-merge |
Gộp hai danh sách | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-middle |
Phần tử ở giữa | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-remove-nth |
Xóa phần tử thứ N từ cuối | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-reverse |
Đảo ngược danh sách | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
ll-search |
Tìm kiếm trong danh sách | ⭐⭐⭐ | Cấu trúc dữ liệu | Danh sách liên kết |
2.5. Hàng đợi ưu tiên và Cấu trúc Heap (Priority Queue & Heap)¶
Cài đặt Min-Heap, Max-Heap, tìm phần tử thứ K và gộp danh sách sắp xếp.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
heap-basic |
Heap cơ bản | ⭐ | Cấu trúc dữ liệu | Heap |
heap-dijkstra |
Đường đi ngắn nhất (Dijkstra) | ⭐ | Cấu trúc dữ liệu | Heap |
heap-k-closest |
K điểm gần gốc nhất | ⭐ | Cấu trúc dữ liệu | Heap |
heap-k-sum |
Tổng lớn nhất K cặp | ⭐ | Cấu trúc dữ liệu | Heap |
heap-kth-min |
Phần tử nhỏ thứ K | ⭐ | Cấu trúc dữ liệu | Heap |
heap-kth-stream |
Phần tử lớn thứ K trong luồng | ⭐ | Cấu trúc dữ liệu | Heap |
heap-median |
Median trong luồng dữ liệu | ⭐ | Cấu trúc dữ liệu | Heap |
heap-merge-sorted |
Gộp K dãy đã sắp xếp | ⭐ | Cấu trúc dữ liệu | Heap |
heap-min-rooms |
Tối thiểu phòng họp | ⭐ | Cấu trúc dữ liệu | Heap |
heap-nearly-sorted |
Sắp xếp mảng gần đúng | ⭐ | Cấu trúc dữ liệu | Heap |
heap-reorganize |
Sắp xếp lại xâu | ⭐ | Cấu trúc dữ liệu | Heap |
heap-sliding-median |
Median cửa sổ trượt | ⭐ | Cấu trúc dữ liệu | Heap |
heap-task-scheduler |
Lập lịch tác vụ | ⭐ | Cấu trúc dữ liệu | Heap |
heap-top-k |
K phần tử lớn nhất | ⭐ | Cấu trúc dữ liệu | Heap |
heap-ugly-number |
Số ugly thứ N | ⭐ | Cấu trúc dữ liệu | Heap |
2.6. Bảng băm (Hash Table)¶
Bảng băm tra cứu O(1), đếm tần suất và xử lý các phần tử phân biệt.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ht-anagram |
Nhóm anagram | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-basic |
Bảng băm cơ bản | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-distinct |
Đếm giá trị phân biệt | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-first-repeat |
Phần tử lặp đầu tiên | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-freq |
Đếm tần số | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-intersection |
Giao của hai mảng | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-longest-zero |
Đoạn con dài nhất tổng 0 | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-pair-sum |
Cặp tổng X | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-subarray-zero |
Đếm đoạn con tổng 0 | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
ht-symmetric |
Hiệu đối xứng | ⭐⭐⭐ | Cấu trúc dữ liệu | Bảng băm |
2.7. Rời rạc hóa tọa độ (Coordinate Compression)¶
Nén không gian giá trị phục vụ các cấu trúc dữ liệu và thuật toán nâng cao.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
disc-basic |
Rời rạc hoá mảng | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-closest |
Số lớn hơn X gần nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-distinct |
Số lượng giá trị khác nhau | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-freq |
Tần số giá trị | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-pair |
Cặp số bằng nhau | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-range-freq |
Truy vấn tần số trong đoạn | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
disc-sweep |
Đoạn phủ dày nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Rời rạc hóa |
2.8. Cây tìm kiếm nhị phân và Skip List (BST & Skip List)¶
Cây tìm kiếm nhị phân cân bằng (BST) và danh sách liên kết phân tầng (Skip List).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
bst-balance |
Kiểm tra BST cân bằng | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-delete |
Xoá nút khỏi BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-inorder |
Duyệt inorder của BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-insert |
Chèn vào BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-kth-min |
Phần tử nhỏ thứ K trong BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-lca |
Tổ tiên chung gần nhất trong BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-pred-succ |
Predecessor và Successor trong BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-range |
Đếm số nút trong khoảng | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-search |
Tìm kiếm trong BST | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
bst-validate |
Kiểm tra BST hợp lệ | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
sl-insert-search |
Tìm Kiếm Và Thêm Phần Tử | ⭐ | Cấu trúc dữ liệu | Skip list |
sl-min-max |
Tìm Min-Max Động | ⭐ | Cấu trúc dữ liệu | Skip list |
sl-order-statistics |
Thứ Tự Phần Tử | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
sl-pred-succ |
Tìm Số Kế Cận | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
sl-range-sum |
Tổng Trong Khoảng | ⭐⭐ | Cấu trúc dữ liệu | Skip list |
sl-sliding-median |
Trung Vị Trượt | ⭐⭐⭐ | Cấu trúc dữ liệu | Skip list |
PHẦN III: CẤU TRÚC DỮ LIỆU NÂNG CAO VÀ TRUY VẤN ĐOẠN (ADVANCED TREE & RANGE STRUCTURES)¶
3.1. Cây Fenwick (Binary Indexed Tree) 1D và 2D¶
Truy vấn điểm, cập nhật đoạn và xử lý bảng 2D với độ phức tạp O(log N).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
b2d-coord-comp |
Ngôi Sao Trên Bầu Trời | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-invert |
Lật Bóng Đèn Ma Trận | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-max-subgrid |
Tổng Lưới Con Lớn Nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-nested-rect |
Khung Tranh Bao Nhau | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-point-add |
Cập Nhật Điểm Tổng Lưới | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-range-add |
Cộng Đoạn Lưới Truy Vấn Điểm | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-range-sum |
Cộng Đoạn Lưới Tính Tổng | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
b2d-rect-xor |
Tổng XOR Vùng Hình Chữ Nhật | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-2d-point |
Đếm Cây Nông Trại 2D | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-2d-range |
Điều Khiển LED 2D | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-distinct |
Số Màu Sắc Phân Biệt | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-inv-cnt |
Đếm Cặp Nghịch Thế | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-kth-small |
Tìm Điểm Nhỏ Thứ K | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-lex-min |
Hoán Vị Nhỏ Nhất Từ Điển | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-nested |
Đếm Đoạn Thẳng Bao Nhau | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-point-add |
Cộng Điểm Tính Tổng | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-prefix-max |
Giá Cổ Phiếu Lớn Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-range-add |
Cộng Đoạn Truy Vấn Điểm | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-range-sum |
Cộng Đoạn Tính Tổng Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
bit-salary |
Quản Lý Mức Lương | ⭐⭐ | Cấu trúc dữ liệu | Cây Fenwick |
3.2. Cây phân đoạn (Segment Tree)¶
Truy vấn khoảng (RMQ, Sum, GCD) và cập nhật khoảng với kỹ thuật Lazy Propagation.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
it-any-intersect |
Tồn Tại Đoạn Giao Nhau | ⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-count-intersect |
Đếm Số Lượng Đoạn Giao Nhau | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-find-all |
Liệt Kê Các Đoạn Giao Nhau | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-largest-overlap |
Phần Giao Nhau Lớn Nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-max-right-int |
Đoạn Giao Có Mút Phải Lớn Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-min-len-int |
Độ Dài Giao Nhỏ Nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-point-query |
Truy Vấn Điểm Thuộc Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
it-superset-query |
Truy Vấn Bao Phủ Hoàn Toàn | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-2d-basic |
Cập Nhật Điểm Tổng Ma Trận Con | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-basic-and |
AND Bit Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-basic-gcd |
GCD Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-basic-max |
Giá Trị Lớn Nhất Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-basic-min |
Giá Trị Nhỏ Nhất Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-basic-or |
OR Bit Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-count-min |
Tìm Min Và Đếm Tần Suất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-count-ranges |
Đếm Đoạn Con Min Bằng Giá Trị Cho Trước | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-distinct-cnt |
Đếm Giá Trị Phân Biệt Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-dynamic |
Cây Phân Đoạn Động | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-first-min-idx |
Vị Trí Đầu Tiên Của Min | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-gcd-query |
Truy Vấn Ước Chung Lớn Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-inverse-count |
Đếm Số Cặp Nghịch Thế | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-kth-min-range |
Phần Tử Nhỏ Thứ K | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-kth-zero |
Tìm Số Không Thứ K | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-longest-eq-gcd |
Đoạn Con GCD Lớn Hơn 1 Bất Kỳ | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-max-query |
Truy Vấn Lớn Nhất Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-max-sub-gcd |
Đoạn Con GCD Lớn Hơn 1 | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-max-subarray |
Đoạn Con Tổng Lớn Nhất | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-merge |
Tần Suất Màu Sắc Cây Con | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-min-query |
Truy Vấn Nhỏ Nhất Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-pair-gcd-max |
GCD Lớn Nhất Của Cặp Kề | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-pair-of-nums |
Đoạn Chia Hết Cho Phần Tử Đầu | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-persistent-kth |
Tìm Phần Tử Nhỏ Thứ K | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-persistent-sum |
Tổng Đoạn Trên Lịch Sử | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-add |
Cập Nhật Đoạn Cộng Giá Trị | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-chmin |
Chmin Đoạn Và Tính Tổng | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-gcd-cnt |
Đếm Số Bằng GCD Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-lcm |
LCM Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-min |
Cộng Đoạn Và Tìm Nhỏ Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-min-max |
Hiệu Lớn Nhất Bé Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-mul-add |
Cộng Nhân Đoạn Tính Tổng | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-set |
Gán Đoạn Và Tính Tổng | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-set-min |
Gán Đoạn Và Tìm Nhỏ Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-range-sum |
Cộng Đoạn Và Tính Tổng | ⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-sum-query |
Truy Vấn Tổng Đoạn | ⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-sweepline-area |
Hợp Diện Tích Hình Chữ Nhật | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
st-tree-path |
Cập Nhật Đường Đi Trên Cây | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây phân đoạn |
3.3. Cây phân đoạn động và Bền vững (Persistent Segment Tree)¶
Lưu trữ lịch sử các phiên bản cây và giải quyết bài toán RMQ / Distinct online.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
pst-history-min |
Tìm Cực Tiểu Trên Lịch Sử | ⭐⭐⭐ | Cấu trúc dữ liệu | Persistent Segment Tree |
pst-mex-query |
Tìm MEX Trên Khoảng Online | ⭐⭐⭐ | Cấu trúc dữ liệu | Persistent Segment Tree |
pst-online-distinct |
Đếm Số Khác Biệt Online | ⭐⭐⭐ | Cấu trúc dữ liệu | Persistent Segment Tree |
3.4. Cây tiền tố (Trie)¶
Lưu trữ tập từ vựng, xử lý tiền tố xâu và tìm kiếm cặp XOR lớn nhất.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
trie-autocomplete |
Gợi Ý Từ Khóa Autocomplete | ⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-insert-search |
Tập Từ Vựng Cây Tiền Tố | ⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-longest-prefix |
Tiền Tố Chung Dài Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-prefix-count |
Đếm Tần Suất Tiền Tố | ⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-word-break |
Phân Tách Từ | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-xor-limit |
Cặp XOR Giới Hạn | ⭐⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-xor-max |
Cặp XOR Lớn Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
trie-xor-min |
Cặp XOR Nhỏ Nhất | ⭐⭐ | Cấu trúc dữ liệu | Cây tiền tố Trie |
3.5. Cây Wavelet (Wavelet Tree)¶
Truy vấn thống kê thứ tự K và đếm số lượng trong đoạn giá trị với O(log Sigma).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
wt-count-less |
Đếm Số Nhỏ Hơn Hoặc Bằng X | ⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-kth-largest |
K-th Largest Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-kth-smallest |
K-th Smallest Trên Đoạn | ⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-median-range |
Số Trung Vị Trên Đoạn | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-next-greater-val |
Giá Trị Kế Tiếp Lớn Hơn | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-percentile |
Tìm Phân Vị Trên Đoạn | ⭐⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-prev-smaller-val |
Giá Trị Kế Tiếp Nhỏ Hơn | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-range-count-in |
Đếm Số Trong Đoạn Giá Trị | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-range-freq |
Tần Suất Xuất Hiện Trong Khoảng | ⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
wt-rect-count |
Đếm Điểm Trong Hình Chữ Nhật | ⭐⭐⭐ | Cấu trúc dữ liệu | Wavelet Tree |
3.6. Cây Li Chao (Li Chao Tree)¶
Duy trì tập các hàm bậc nhất và truy vấn cực trị hàm số tại tọa độ x.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
lc-2d-rect |
Li Chao 2D | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-basic |
Duong thang - Li Chao Tree co ban | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-basic-easy |
Đường thẳng dễ | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-dp-basic |
DP co ban voi Li Chao | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-dp-fence |
Hang rao - DP CHT dong | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-dp-land |
Mua dat - DP mua dat dong | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-line-add-rm |
Them va xoa duong thang | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-max-query |
Truy vấn giá trị lớn nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-persist |
Li Chao bền vững | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
lc-range |
Doan thang - Them xoa doan | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Convex Hull Trick |
3.7. Nhảy nhị phân trên mảng (Binary Lifting on Array)¶
Thuật toán nhảy nhị phân định vị phần tử và phân hoạch đoạn con.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
bla-cycle-det |
Tìm Chu Kỳ | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-jump-limit |
Nhảy Đến Khi Vượt Ngưỡng | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-k-step |
Nhảy K Bước | ⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-kth-distinct |
Số Thứ K Khác Biệt | ⭐⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-min-edge |
Giá Trị Cực Tiểu Khi Nhảy | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-next-greater |
Nhảy Phải Số Lớn Hơn | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-partition |
Phân Hoạch Đoạn Con | ⭐⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-reach-steps |
Số Bước Để Đến V | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-segment-cover |
Phủ Đoạn | ⭐⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
bla-sliding-sum |
Tổng Trượt Vượt Ngưỡng | ⭐⭐ | Cấu trúc dữ liệu | Binary Lifting trên mảng |
3.8. Thuật toán Mo và Xử lý truy vấn căn bậc hai (Mo's Algorithm)¶
Kỹ thuật sắp xếp và xử lý truy vấn offline chia khối căn bậc hai.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
mo-distinct |
[Mo's] Đếm Khác | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-distinct-basic |
Đếm khác cơ bản | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-freq |
[Mo's] Tần Suất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-inversion |
[Mo's] Nghịch Thế | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-median |
[Mo's] Trung Vị | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-mode |
[Mo's] Phổ Biến | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-tree |
[Mo's] Trên Cây | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-tree-update |
Mo's cây động | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-update |
[Mo's] Cập Nhật | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
mo-xor-pair |
[Mo's] Cặp XOR 0 | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Thuật toán Mo |
PHẦN IV: THUẬT TOÁN ĐỒ THỊ (GRAPH ALGORITHMS)¶
4.1. Duyệt đồ thị BFS, DFS và 0-1 BFS¶
Duyệt không gian trạng thái, kiểm tra liên thông, chu trình và tìm đường đi ngắn nhất đồ thị 0-1.
4.2. Cấu trúc tập hợp rời nhau (DSU & DSU Rollback)¶
Cấu trúc Disjoint Set Union nén đường và hỗ trợ quay lui trạng thái (Rollback).
4.3. Cây khung nhỏ nhất (MST) và Sắp xếp Tô-pô¶
Thuật toán Kruskal, Prim xây dựng cây khung và tìm thứ tự Tô-pô trên đồ thị có hướng không chu trình.
4.4. Đường đi ngắn nhất (Dijkstra, Bellman-Ford, SPFA, Floyd-Warshall)¶
Thuật toán tìm đường đi ngắn nhất đơn nguồn và đa nguồn trên đồ thị có trọng số.
4.5. Khớp, Cầu và Thành phần liên thông mạnh (SCC)¶
Thuật toán Tarjan tìm khớp, cầu, 2-edge connected components và thành phần liên thông mạnh.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
artic-point |
Nút Giao Quan Trọng | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
bridge-2edge |
Khối Liên Kết Bền Vững | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
bridge-connect |
Xây Dựng Đường Mới | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
bridge-find |
Đường Quan Trọng | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
scc-condense |
Đồ Thị Thu Nhỏ | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
scc-max-comp |
Cụm Liên Lạc Lớn Nhất | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
scc-path |
Lộ Trình Thông Tin | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
scc-tarjan |
Cụm Liên Lạc Độc Lập | ⭐⭐ | Đồ thị | Khớp, Cầu và SCC |
4.6. Chu trình và Đường đi Euler¶
Tìm đường đi và chu trình đi qua mỗi cạnh đúng một lần bằng thuật toán Hierholzer.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
euler-basic |
Mạng lưới phát tờ rơi | ⭐ | Đồ thị | Chu trình Euler |
euler-de-bruijn |
Chuỗi mật mã De Bruijn | ⭐⭐ | Đồ thị | Chu trình Euler |
euler-directed |
Tuyến bay giao hàng | ⭐⭐ | Đồ thị | Chu trình Euler |
euler-domino |
Sắp xếp quân bài Domino | ⭐⭐ | Đồ thị | Chu trình Euler |
euler-path |
Đường đi thám hiểm | ⭐ | Đồ thị | Chu trình Euler |
euler-postman |
Người đưa thư Trung Hoa | ⭐⭐⭐ | Đồ thị | Chu trình Euler |
euler-reconstruct |
Hành trình khép kín | ⭐⭐ | Đồ thị | Chu trình Euler |
euler-word-chain |
Chuỗi ghép từ | ⭐⭐ | Đồ thị | Chu trình Euler |
4.7. Cặp ghép cực đại trên đồ thị hai phía¶
Thuật toán tìm cặp ghép lớn nhất trên đồ thị hai phía (Hopcroft-Karp / DFS Augmenting Path).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
match-basic |
Bộ ghép cơ bản | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-cover |
Tập phủ cạnh nhỏ nhất | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-domino |
Xếp domino lên bảng cờ | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-hopcroft |
Bộ ghép kích thước lớn | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-hungarian |
Phân công chi phí thấp nhất | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-job |
Phân công công việc | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-max-indep |
Tập đỉnh độc lập lớn nhất | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
match-permut |
Ghép cặp hoán vị | ⭐⭐ | Đồ thị | Cặp ghép cực đại |
4.8. Luồng cực đại trên mạng (Network Flow)¶
Thuật toán Edmonds-Karp và Dinic giải quyết bài toán luồng cực đại và lát cắt hẹp nhất.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
flow-bipartite |
Ghép Cặp Hai Phía | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-dinic |
Luồng Cực Đại Dinic | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-edge-disc |
Cạnh Quan Trọng | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-max-closure |
Tập Đóng Trọng Số Lớn Nhất | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-max-flow |
Luồng Cực Đại Cơ Bản | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-min-cut |
Lát Cắt Cực Tiểu | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-multi-src |
Luồng Đa Nguồn Đích | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
flow-node-cap |
Dung Lượng Trên Đỉnh | ⭐⭐ | Đồ thị | Luồng cực đại Network Flow |
4.9. Bài toán thỏa mãn 2 biến (2-SAT)¶
Xây dựng đồ thị suy diễn và giải bài toán 2-SAT bằng thành phần liên thông mạnh.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
twosat-2cnf |
Chuyển 2-CNF về đồ thị khả năng | ⭐⭐ | Đồ thị | 2-SAT |
twosat-3col |
Tô màu đồ thị ba màu dùng 2-SAT | ⭐⭐ | Đồ thị | 2-SAT |
twosat-assign |
Tìm phép gán thỏa mãn 2-SAT | ⭐⭐ | Đồ thị | 2-SAT |
twosat-atmost1 |
Tối đa một biến đúng trong ba biến | ⭐⭐ | Đồ thị | 2-SAT |
twosat-basic |
Kiểm tra biểu thức 2-SAT | ⭐⭐ | Đồ thị | 2-SAT |
twosat-color |
Tô màu đồ thị hai màu có ràng buộc | ⭐⭐ | Đồ thị | 2-SAT |
twosat-count |
Đếm số phép gán thỏa mãn 2-SAT | ⭐⭐ | Đồ thị | 2-SAT |
twosat-impl |
Hệ ràng buộc kéo theo | ⭐⭐ | Đồ thị | 2-SAT |
twosat-lexical |
Phép gán thỏa mãn có thứ tự từ điển nhỏ nhất | ⭐⭐ | Đồ thị | 2-SAT |
twosat-max-true |
Phép gán thỏa mãn có nhiều true nhất | ⭐⭐ | Đồ thị | 2-SAT |
twosat-schedule |
Xếp lịch thi với ràng buộc | ⭐⭐ | Đồ thị | 2-SAT |
twosat-xor |
Hệ ràng buộc XOR | ⭐⭐ | Đồ thị | 2-SAT |
PHẦN V: THUẬT TOÁN VÀ CẤU TRÚC DỮ LIỆU TRÊN CÂY (TREE ALGORITHMS)¶
5.1. Tổ tiên chung gần nhất (LCA) và Nhảy nhị phân¶
Tính 2^k-ancestor, LCA của hai đỉnh và truy vấn trọng số đường đi trên cây.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
lca-basic |
Tổ tiên chung | ⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-distance |
Khoảng cách trạm | ⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-k-ancestor |
Thăng chức cấp K | ⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-max-edge |
Độ hiểm trở lớn nhất | ⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-min-edge |
Cầu tải trọng yếu nhất | ⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-node-on-path |
Đường tuần tra | ⭐⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-planets |
Hành trình du hành | ⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
lca-tree-update |
Giao lộ giao thông | ⭐⭐ | Cấu trúc dữ liệu | LCA & Binary Lifting |
5.2. Euler Tour Tree (ETT)¶
Trải phẳng cây thành mảng để chuyển truy vấn cây con thành truy vấn đoạn.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ett-ancestor |
Quan hệ huyết thống | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-dist |
Khoảng cách hai làng | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-lca |
Tổ tiên chung | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-root-sum |
Đường về nguồn cội | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-size |
Kích thước vương quốc | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-subtree-min |
Điểm yếu nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-subtree-sum |
Kho lương thực | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
ett-subtree-up |
Phát lương | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Euler Tour Tree |
5.3. RMQ và Truy vấn đường đi trên cây¶
Kỹ thuật Lubenica kết hợp Binary Lifting truy vấn min/max trọng số trên đường đi.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
rmqt-and-path |
AND đường đi | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-kth-edge |
Cạnh thứ K | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-max-path |
Cạnh lớn nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-min-basic |
Cạnh nhỏ cơ bản | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-min-path |
Cạnh nhỏ nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-minmax |
Lubenica gốc | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-or-path |
OR đường đi | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-up-edge |
Sửa cạnh | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
rmqt-xor-path |
XOR đường đi | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Lubenica & RMQ trên cây |
5.4. Phân rã nhánh nặng - nhẹ (Heavy-Light Decomposition)¶
Phân rã cây thành các chuỗi nặng để xử lý truy vấn đường đi tổng quát với O(log^2 N).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
hld-all-path |
Đa truy vấn | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-edge-up |
Cập nhật cạnh | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-heavy-query |
Truy vấn nặng | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-lca |
Tổ tiên bằng HLD | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-path-add |
Cộng đường đi | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-path-easy |
Đường đi dễ | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-path-max |
Đường đi lớn nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-path-sum |
Đường đi tổng số | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
hld-subtree |
Nhánh cây | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Heavy-Light Decomposition |
5.5. Phân rã trọng tâm (Centroid Decomposition)¶
Chia để trị trên cây thông qua trọng tâm để giải các bài toán đường đi độ dài K.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
cd-count-k |
Đường đi tổng K | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-count-pairs |
Đếm cặp gần nhau | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-decompose |
Phân tách cây | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-diameter-all |
Mọi đường kính | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-distance-query |
Khoảng cách đỉnh xa | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-find-centroid |
Tìm trọng tâm | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-max-path |
Đường đi dài nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-nearest |
Tìm đỉnh gần nhất | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-path-count-k |
Đếm đường K | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
cd-sum-dist |
Tổng khoảng cách | ⭐⭐⭐⭐⭐ | Cấu trúc dữ liệu | Centroid Decomposition |
PHẦN VI: QUY HOẠCH ĐỘNG (DYNAMIC PROGRAMMING)¶
6.1. Quy hoạch động cơ bản¶
Các bài toán quy hoạch động kinh điển: dãy con tăng dài nhất (LIS), cái túi (Knapsack), biến đổi xâu.
6.2. Quy hoạch động 1D/1D¶
Tối ưu hóa các hệ thức quy hoạch động 1 chiều.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
d1d-attach |
Ghep Cap Thiet Bi | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-basic-split |
Chia Mang | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-cost-k |
D&C siêu khó | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-factory |
Xay Nha May | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-hat |
Phat Non | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-letter |
Gui Thu Hang Loat | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-linear-fill |
Dien So Vao Bang | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-painting |
To Mau Hang Rao | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-park |
Tram Dung Chan | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-post-office |
Dat Buu Dien | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
d1d-warehouse |
Xay Kho Hang | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động 1D/1D |
6.3. Quy hoạch động trên cây (Tree DP)¶
Truy vấn tập độc lập, tập phủ đỉnh, đường kính cây và kỹ thuật đổi gốc (Rerooting).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
dpt-center |
Tâm của cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-diameter |
Đường kính cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-k-colors |
Tô màu cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-max-path-sum |
Đường đi tổng lớn | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-reroot |
Đổi gốc | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-size |
Kích thước gia tộc | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-tree-cover |
Phủ đỉnh | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-tree-indset |
Tập độc lập | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-tree-knapsack |
Ba lô trên cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
dpt-tree-matching |
Ghép cặp trên cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên cây |
6.4. Quy hoạch động trên DAG¶
Tính toán đường đi dài nhất, đếm số đường đi và tối ưu hóa thứ tự tô-pô trên DAG.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
dpg-01 |
Đếm Đường Đi Trên Bản Đồ Một Chiều | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-02 |
Tuyến Giao Hàng Rẻ Nhất | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-03 |
Chuyến Phượt Qua Nhiều Điểm Dừng Nhất | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-04 |
Thời Gian Sớm Nhất Hoàn Thành Công Đoạn | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-05 |
Xếp Lịch Học Các Môn Có Tiên Quyết | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-06 |
Hoạt Động Lợi Nhuận Lớn Nhất | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-07 |
Đi Đúng K Bước Qua Bản Đồ | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
dpg-08 |
Số Tuyến Đường Giữa Hai Thành Phố | ⭐⭐⭐ | Quy hoạch động | Quy hoạch động trên DAG |
6.5. Quy hoạch động trên đoạn (Interval DP)¶
Nhân ma trận chuỗi, trộn sỏi, tam giác hóa đa giác và phân tách xâu đối xứng.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
int-bracket |
Ngoặc đúng | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-burst-balloons |
Bong bóng | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-burst-max |
Bong bóng max | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-matrix-chain |
Nhân ma trận | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-merge-stones |
Trộn đá | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-merge-v2 |
Trộn đá v2 | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-palindrome-cut |
Cắt xâu đối xứng | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-palindrome-lps |
Xâu con đối xứng dài nhất | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-pick-edge |
Chọn cạnh | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-polygon |
Đa giác | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
int-tree-cut |
Chặt cây | ⭐⭐⭐⭐⭐ | Quy hoạch động | Interval DP |
6.6. Quy hoạch động chữ số (Digit DP)¶
Đếm số lượng số trong đoạn [L, R] thỏa mãn các ràng buộc về chữ số.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
dig-count-3 |
Đếm Số Chia Hết Cho 3 | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-div-digit |
Đếm Số Chia Hết Cho Các Chữ Số | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-k-digit |
Tìm Số Thứ K Có Chữ Số Tăng Dần | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-no-adj-same |
Đếm Số Không Có Chữ Số Liền Kề Giống Nhau | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-no-trailing |
Đếm Số Không Có Chữ Số 0 Ở Cuối | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-not-13 |
Đếm Số Không Chứa Xâu "13" | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-num-square |
Đếm Số Có Tổng Bình Phương Chữ Số Là Số Nguyên Tố | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-palindrome |
Đếm Số Đối Xứng | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-product |
Đếm Số Có Tích Chữ Số Không Vượt Quá K | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-sum-digit |
Đếm Số Có Tổng Chữ Số Bằng K | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
dig-sum-even |
Tổng chữ số chẵn | ⭐⭐⭐⭐⭐ | Quy hoạch động | Digit DP |
6.7. Quy hoạch động Bitmask¶
Biểu diễn trạng thái tập con bằng số nguyên và tối ưu bài toán phân công công việc.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
bit-assign |
Phân công công việc | ⭐⭐⭐ | Quy hoạch động | Bitmask DP |
6.8. Quy hoạch động trên tập con (SOS DP)¶
Sum Over Subsets DP tính tổng và cực trị trên tất cả các tập con nhị phân với O(K * 2^K).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
sos-and-zero |
AND bằng 0 | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-cnt-sub |
Đếm tập con đẹp | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-four-and |
Bốn số AND | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-gcd-set |
GCD tập con | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-max-sub |
Lớn nhất tập con | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-max-xor-sub |
XOR tập con lớn | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-or-pair |
Cặp OR | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-seven-and |
Bảy số AND | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-sum-sub |
Tổng tập con | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-three-or |
Ba số OR | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
sos-xor-pair |
Cặp XOR | ⭐⭐⭐⭐⭐ | Phép toán bit | SOS DP |
6.9. Tối ưu hóa Quy hoạch động (CHT, Knuth, D&C, Alien)¶
Các kỹ thuật tối ưu hóa nâng cao: Convex Hull Trick, Knuth Optimization, Chia để trị (D&C) và Alien Trick.
PHẦN VII: THUẬT TOÁN XỬ LÝ XÂU KÝ TỰ (STRING ALGORITHMS)¶
7.1. Xử lý xâu cơ bản và Thao tác ký tự¶
Xử lý xâu, đếm tần suất, kiểm tra đối xứng và nén chuỗi cơ bản.
7.2. Băm chuỗi và Z-Algorithm¶
Thuật toán băm Rolling Hash và hàm tiền tố Z-Algorithm tìm kiếm xâu con trong thời gian tuyến tính.
7.3. Thuật toán Manacher¶
Tìm toàn bộ các xâu con đối xứng (Palindrome) dài nhất trong thời gian O(N).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
man-cmn |
Palindrome chung giữa hai vị trí | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-cnt |
Đếm cặp palindrome con | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-com |
Palindrome chung giữa hai xâu | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-dst |
Đếm palindrome phân biệt | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-even |
Palindrome độ dài chẵn | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-odd3 |
Liệt kê palindrome độ dài 3 | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-pk |
Đếm palindrome độ dài K (Manacher) | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
man-pos |
Palindrome chứa vị trí cho trước | ⭐⭐ | Xử lý xâu ký tự | Thuật toán Manacher |
7.4. Mảng Hậu tố (Suffix Array) và Suffix Automaton¶
Xây dựng mảng hậu tố Suffix Array, mảng LCP và máy tự động hậu tố SAM.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
sa-cnt-substr |
Đếm xâu con | ⭐ | Xử lý xâu ký tự | Suffix Array |
sa-first-pos |
Vị trí xuất hiện đầu tiên | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
sa-k-occur |
Xâu con K lần | ⭐⭐⭐⭐⭐ | Xử lý xâu ký tự | Suffix Array |
sa-kth-substr |
Xâu con thứ K | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
sa-lcs |
Xâu con chung dài nhất | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
sa-min-cyclic |
Xoay vòng nhỏ nhất | ⭐ | Xử lý xâu ký tự | Suffix Array |
sa-occur |
Số lần xuất hiện | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
sa-short-unique |
Xâu con ngắn nhất xuất hiện 1 lần | ⭐ | Xử lý xâu ký tự | Suffix Array |
sa-substr |
Xâu con | ⭐ | Xử lý xâu ký tự | Suffix Array |
sa-substr-all |
Xâu con bội | ⭐⭐⭐⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-blr |
Xâu con lặp dài nhất | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-chc |
Xâu con phân biệt theo ký tự đầu | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-dk |
Xâu con phân biệt độ dài K (SA) | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-finlcs |
LCS bằng Suffix Array cải tiến | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-lcpr |
LCP giữa hai vị trí trực tuyến | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-pal2 |
Palindrome xuất hiện nhiều nhất | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-per |
Chu kỳ ngắn nhất của xâu (SA) | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
saf-salc |
In Suffix Array và LCP | ⭐⭐ | Xử lý xâu ký tự | Suffix Array |
7.5. Thuật toán Aho-Corasick¶
Máy tự động tiền tố tìm kiếm đồng thời nhiều mẫu xâu trong thời gian tuyến tính.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ac-bad-words |
Xóa ít nhất | ⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-basic |
Tìm từ | ⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-count |
Đếm từ | ⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-dna |
DNA | ⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-exist |
Kiểm tra | ⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-find-word |
Tìm từ đơn | ⭐⭐⭐⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-pattern |
Pattern | ⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-word-max |
Từ dài nhất | ⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-word-min |
Đoạn ngắn | ⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
ac-xor-string |
AC + XOR | ⭐⭐⭐⭐⭐ | Xử lý xâu ký tự | Aho-Corasick |
PHẦN VIII: LÝ THUYẾT SỐ VÀ ĐẠI SỐ (NUMBER THEORY & ALGEBRA)¶
8.1. Ước chung lớn nhất, Euclid và Nghịch đảo Modulo¶
Thuật toán Euclid mở rộng, tính lũy thừa nhanh và nghịch đảo modulo.
8.2. Hàm Phi Euler và Hàm Nhân tính¶
Tính hàm Phi Euler, tích chập Dirichlet và hàm Möbius biến đổi.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
mobius-basic |
Hàm Möbius | ⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-coprime-cnt |
Đếm cặp nguyên tố cùng nhau | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-div-sum |
Tổng GCD dùng Möbius | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-mult-func |
Hàm nhân tính | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-range |
Sàng Möbius | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-sigma0 |
Tổng số ước | ⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-squarefree |
Đếm số square-free | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
mobius-triple |
Đếm bộ gcd=1 bằng Möbius | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-coprime-r |
Đếm nguyên tố cùng nhau trong đoạn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-div-euler |
Chia modulo bằng định lý Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-euler |
Hàm Phi Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-exponent |
Lũy thừa modulo bằng định lý Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-frac |
Đếm phân số tối giản | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-gcd-sum |
Tổng GCD với Phi Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-multi |
Tổng Phi trên ước | ⭐ | Lý thuyết số | Hàm Phi Euler |
phi-order |
Cấp của số modulo | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
phi-range |
Sàng Phi Euler | ⭐ | Lý thuyết số | Hàm Phi Euler |
phi-sum |
Tổng Phi Euler trên đoạn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-divisor-sum |
Tổng ước số | ⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-euler-puzzle |
Ngược Phi Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-euler-single |
Phi hàm Euler | ⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-euler-thm |
Định lý Euler | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-gcd-sum2 |
Tổng GCD nâng cao | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-linear-sieve |
Sàng tuyến tính | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-mod-equation |
Phương trình đồng dư bậc nhất | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-mod-puzzle |
Câu đố đồng dư | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-num-divisors |
Số lượng, tổng, tích ước | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-pollard |
Phân tích thừa số nguyên tố | ⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-prime-interval |
Sàng phân đoạn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
shnc-prime-puzzle |
Số đặc biệt | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-divcnt |
Đếm ước nhiều truy vấn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-divcnt-range |
Đếm số có K ước | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-divsum |
Tổng ước modulo | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-fact-multi |
Phân tích thừa số nhiều truy vấn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-lcm-range |
LCM trên đoạn | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-spf |
SPF cơ bản | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-squarefree |
Đếm số square-free | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
snhh-sumdiv1n |
Tổng đếm ước 1..N | ⭐⭐ | Lý thuyết số | Hàm Phi Euler |
8.3. Định lý Thặng dư Trung Hoa (CRT)¶
Giải hệ phương trình đồng dư bậc nhất bằng định lý thặng dư Trung Hoa.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
crt |
Định Lý Thặng Dư Trung Hoa | ⭐⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-basic |
CRT cơ bản | ⭐⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-garner |
CRT thuật toán Garner | ⭐⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-inv |
CRT với dư bằng 1 | ⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-large |
CRT nhiều phương trình | ⭐⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-pair |
CRT hai phương trình | ⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
crt-prime |
CRT với modulo nguyên tố | ⭐⭐ | Lý thuyết số | Định lý Thặng dư Trung Hoa |
8.4. Định lý Wilson và Định lý Lucas¶
Tính toán giai thừa và tổ hợp modulo số nguyên tố lớn.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
wl-comb-mod |
Tổng tổ hợp modulo | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-fact-mod |
Giai thừa modulo | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-fact-p |
Giai thừa modulo số nguyên tố | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-lucas-basic |
Định lý Lucas cơ bản | ⭐⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-lucas-multi |
Lucas nhiều truy vấn | ⭐⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-lucas-sumstr |
Tổng tổ hợp theo bội của p | ⭐⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-permut |
Hoán vị modulo | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-wilson |
Kiểm chứng định lý Wilson | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-wilson-check |
Kiểm tra nguyên tố bằng Wilson | ⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-wilson-ext |
Wilson mở rộng | ⭐⭐ | Lý thuyết số | Định lý Wilson & Lucas |
wl-wilson-lucas |
Kết hợp Wilson và Lucas | ⭐⭐ | Lý thuyết số | Định lý Wilson & Lucas |
8.5. Sàng nâng cao, Logarithm rời rạc và Căn nguyên thủy¶
Thuật toán Baby-step Giant-step và tìm căn nguyên thủy.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
fsm-fact-basic |
Giai thừa modulo cơ bản | ⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-fact-range |
Tích đoạn modulo | ⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-fact-zero |
Giai thừa và số 0 modulo | ⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-sqrt-both |
Hai căn bậc hai modulo | ⭐⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-sqrt-check |
Kiểm tra căn bậc hai modulo | ⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-sqrt-easy |
Căn bậc hai modulo (p ≡ 3 mod 4) | ⭐⭐ | Lý thuyết số | Logarithm rời rạc |
fsm-sqrt-ts |
Tonelli-Shanks | ⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-boi-so |
Bội số trong đoạn | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-dprime-factor |
Đếm ước nguyên tố | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-fibo |
Fibonacci nhanh | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-gcd-sum |
Tổng GCD | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-linear-rec |
Dãy số truy hồi | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-lucas |
Tổ hợp Lucas | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-nt-sinhdoi |
Cặp nguyên tố sinh đôi | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-phi |
Hàm Euler | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-powpow |
Lũy thừa chồng | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-sangdoan |
Sàng phân đoạn | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-spf |
Thừa số nguyên tố nhỏ nhất | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
ltht-tprime |
Số T-prime | ⭐⭐⭐ | Lý thuyết số | Logarithm rời rạc |
8.6. Nhân ma trận và Khử Gauss¶
Nhân ma trận nhanh tính số Fibonacci, giải hệ phương trình tuyến tính và tính định thức modulo.
8.7. Tổ hợp và Xác suất¶
Tính chỉnh hợp, tổ hợp, số Catalan, số Stirling và kỳ vọng toán học.
8.8. Nguyên lý Bao hàm - Loại trừ¶
Đếm số phần tử thỏa mãn ít nhất một tính chất thông qua công thức bao hàm loại trừ.
8.9. Biến đổi Fourier và NTT¶
Biến đổi Number Theoretic Transform nhân đa thức trong thời gian O(N log N).
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
ntt-basic |
NTT nhân đa thức | ⭐⭐ | Toán học | Biến đổi NTT |
ntt-bigint |
Nhân số lớn NTT | ⭐⭐ | Toán học | Biến đổi NTT |
ntt-mul3 |
Nhân ba đa thức | ⭐⭐ | Toán học | Biến đổi NTT |
ntt-pair |
Đếm cặp tổng K | ⭐⭐ | Toán học | Biến đổi NTT |
ntt-self |
Bình phương đa thức | ⭐⭐ | Toán học | Biến đổi NTT |
8.10. Lý thuyết Matroid¶
Cấu trúc Matroid độc lập tuyến tính, Matroid đồ thị và thuật toán tham lam trên Matroid.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
mat-graphic-max |
Graphic Matroid - Cây khung lớn nhất | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-graphic-min |
Graphic Matroid - Cây khung nhỏ nhất | ⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-greedy-proof |
Kiểm tra tham lam tối ưu | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-linear-indep |
Linear Matroid - Hạt năng lượng | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-partition-color |
Partition Matroid - Kẹo màu sắc | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-partition-job |
Partition Matroid - Lập lịch công việc | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-uniform |
Uniform Matroid - Chọn đồ chơi | ⭐ | Thuật toán tham lam | Lý thuyết Matroid |
mat-uniform-k |
Uniform Matroid - Chọn đúng K phần quà | ⭐⭐ | Thuật toán tham lam | Lý thuyết Matroid |
PHẦN IX: HÌNH HỌC TÍNH TOÁN (COMPUTATIONAL GEOMETRY)¶
9.1. Điểm, Đoạn thẳng và Tam giác¶
Kiểm tra hướng rẽ CCW, khoảng cách điểm đến đường thẳng và phân loại tam giác.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
geo-colinear |
Ba ngôi sao thẳng hàng | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-dist2 |
Bình phương khoảng cách | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-line-dist |
Khoảng cách hai đường thẳng | ⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-orient |
Hướng rẽ của Robot | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-p2seg |
Trạm phát sóng wifi | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-pip |
Máy bay không người lái | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-point-on-seg |
Điểm trên đoạn thẳng | ⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-poly-area |
Khu bảo tồn thiên nhiên | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-poly-clock |
Chiều kim đồng hồ | ⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-poly-convex |
Kiểm tra đa giác lồi | ⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-seg-int |
Mạng lưới đường ống | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-tri-area |
Mảnh đất hình tam giác | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
geo-tri-type |
Phân loại tam giác | ⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-2lines |
Vị trí tương đối hai đường thẳng | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-2pts |
Đường thẳng qua hai điểm | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-bisect |
Phân giác của hai tia sáng | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-intersect |
Giao điểm hai đường thẳng | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-poly-area |
Mảnh vườn của bác Tám | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-pt-dist |
Trạm phát sóng và đường dây điện | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-reflect |
Bàn bi-a áo thuật | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
line-seg-int |
Giao điểm của hai đoạn ống | ⭐⭐⭐⭐⭐ | Hình học cơ bản | Hình học cơ bản |
9.2. Hình học Đường tròn¶
Giao điểm đường tròn, tiếp tuyến và diện tích giao thoa hình tròn.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
circle-2intersect |
Giao điểm hai đường tròn | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-area-inter |
Diện tích phần giao hai đường tròn | ⭐⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-circum |
Bán kính đường tròn ngoại tiếp | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-from3 |
Đường tròn qua ba điểm | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-inside |
Kiểm tra điểm và đường tròn | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-intersect |
Số giao điểm hai đường tròn | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-line-inter |
Giao điểm đường thẳng và đường tròn | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
circle-tangent |
Tiếp tuyến từ điểm đến đường tròn | ⭐⭐ | Hình học cơ bản | Hình học đường tròn |
9.3. Góc và Phép quay¶
Tọa độ cực, sắp xếp góc và phép quay vector trong mặt phẳng tọa độ.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
polar-angular-dist |
Khoảng cách góc nhỏ nhất | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-dominant |
Đếm điểm trội | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-max-half |
Nửa mặt phẳng chứa nhiều điểm nhất | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-min-angle |
Góc nhỏ nhất giữa hai vector | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-same-line |
Đường thẳng qua gốc chứa nhiều điểm nhất | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-sector |
Đèn pha chiếu sáng | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-sort-basic |
Sắp xếp điểm theo góc cực | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
polar-visible |
Đếm điểm nhìn thấy từ gốc toạ độ | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rot-tri-rotate |
Diện tích tam giác sau quay | ⭐⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-angle |
Góc giữa hai vector | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-around |
Quay điểm quanh điểm bất kỳ | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-ccw |
Xác định hướng quay | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-clock-angle |
Góc quay đồng hồ | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-point |
Quay điểm quanh gốc toạ độ | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-polar |
Chuyển đổi toạ độ | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
rotate-sort-angle |
Sắp xếp theo góc | ⭐⭐ | Hình học cơ bản | Góc & Phép quay |
9.4. Bao lồi (Convex Hull)¶
Thuật toán Graham Scan và Monotone Chain tìm bao lồi của tập điểm trong mặt phẳng.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
hull-area |
Diện tích bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-build |
Dựng bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-diameter |
Đường kính bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-inside |
Kiểm tra điểm trong bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-max-dist-pair |
Khoảng cách lớn nhất giữa hai điểm | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-max-tri |
Tam giác lớn nhất nội tiếp bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-min-rect |
Hình chữ nhật bao nhỏ nhất | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-perimeter |
Chu vi bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-points-in |
Đếm số điểm thuộc bao lồi | ⭐⭐ | Hình học cơ bản | Bao lồi |
hull-ship-pack |
Chu vi hình chữ nhật bao nhỏ nhất | ⭐⭐ | Hình học cơ bản | Bao lồi |
9.5. Định lý Pick¶
Tính diện tích đa giác nguyên và đếm số điểm nguyên bên trong và trên biên.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
pick-grid-tri |
Điểm nguyên trong tam giác vuông | ⭐ | Hình học cơ bản | Định lý Pick |
pick-lattice-cnt |
Đếm cặp điểm nhìn thấy từ gốc | ⭐⭐ | Hình học cơ bản | Định lý Pick |
pick-poly-boundary |
Điểm nguyên trên biên đa giác | ⭐ | Hình học cơ bản | Định lý Pick |
pick-polygon |
Diện tích đa giác và điểm nguyên | ⭐⭐ | Hình học cơ bản | Định lý Pick |
pick-rectangle-int |
Điểm nguyên bên trong hình chữ nhật | ⭐ | Hình học cơ bản | Định lý Pick |
pick-segment |
Đếm điểm nguyên trên đoạn thẳng | ⭐ | Hình học cơ bản | Định lý Pick |
pick-star-poly |
Đa giác hình sao và định lý Pick | ⭐ | Hình học cơ bản | Định lý Pick |
pick-trapezoid |
Điểm nguyên trong hình thang | ⭐⭐ | Hình học cơ bản | Định lý Pick |
pick-triangle |
Đếm điểm nguyên trong tam giác | ⭐ | Hình học cơ bản | Định lý Pick |
pick-triple |
Giao ba tam giác và điểm nguyên | ⭐⭐ | Hình học cơ bản | Định lý Pick |
9.6. Kỹ thuật Quét đường (Sweep-line)¶
Tìm giao điểm các đoạn thẳng và diện tích hợp các hình chữ nhật bằng Sweep-line.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
sweep-camera |
Đặt camera phủ kín đoạn | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-max-gap |
Khoảng trống lớn nhất | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-max-overlap |
Điểm phủ nhiều đoạn nhất | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-pair-count |
Đếm cặp đoạn giao nhau | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-points-rect |
Đếm điểm trong hình chữ nhật | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-rect-area |
Diện tích hợp hình chữ nhật | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-rect-overlap |
Điểm phủ nhiều hình chữ nhật nhất | ⭐⭐ | Hình học cơ bản | Sweep-line |
sweep-seg-intersect |
Giao điểm đoạn thẳng | ⭐⭐ | Hình học cơ bản | Sweep-line |
PHẦN X: BÀI TOÁN TỔNG HỢP VÀ NÂNG CAO (CAPSTONE PROBLEM SET)¶
10.1. Tuyển tập bài thi và Thử thách tổng hợp¶
Các bài toán chọn lọc tổng hợp kiến thức từ các kỳ thi lập trình.
| Mã bài | Tên bài tập | Độ khó | Phân loại chủ đề | Bài học lý thuyết |
|---|---|---|---|---|
fptat1-pair |
Perfect Pair | ⭐ | Kỹ thuật hai con trỏ | Kỹ năng thi đấu |
fptat1-stair |
Magic Staircase | ⭐ | Quy hoạch động | Kỹ năng thi đấu |
fptat1-treasure |
Treasure Subarray | ⭐ | Tìm kiếm nhị phân | Kỹ năng thi đấu |
fptat1-tree |
Planting Trees | ⭐ | Cấu trúc dữ liệu | Kỹ năng thi đấu |