Data Structures & Algorithms
Kiến thức nền tảng
- Bài toán
- Thuật toán và cấu trúc dữ liệu
- Độ phức tạp tính toán
- Cấu trúc dữ liệu cơ bản
- Đệ quy
- Chia để trị
Sắp xếp
- Selection Sort
- Insertion Sort
- Bubble Sort
- Quick Sort
- Heap Sort
- Merge Sort
- Radix Sort
- Counting Sort
- Shell Sort
- Tim Sort
Tìm kiếm
- Tìm kiếm tuần tự
- Quay lui
- Nhánh và cận
- Tìm kiếm nhị phân
- Tìm kiếm tam phân
- Meet in the middle
- Leo đồi
Giải thuật tham lam
- Nguyên lý tham lam
- Bài toán đồi tiền
- Bài toán lập lịch
- Nén dữ liệu và Huffman Coding
Cây
- Cấu trúc cây
- Cây nhị phân
- Cây nhị phân tự cân bằng
- Segment Tree và Binary Index Tree
- Heavy-Light Decomposition
- Centroid Decomposition
- RMQ và LCA
Quy hoạch động
- Lý thuyết quy hoạch động
- Bài toán đổi tiền
- Dãy con tăng dài nhất
- Chuỗi con chung dài nhất
- Đường đi trên ma trận
- Bài toán cái túi
- Dãy con có tổng chia hết cho K
- Biến đổi xâu
- Nhân tổ hợp ma trận
- Parsing Context-Free Grammar
- Quy hoạch động trạng thái
- Quy hoạc động trên cây
- Digit DP
Đồ thị
- Lý thuyết đồ thị
- Duyệt đồ thị
- Tính liên thông của đồ thị
- Chu trình, đường đi trên đồ thị
- Đường đi ngắn nhất
- Cây khung nhỏ nhất
- Đồ thị có hướng
- Mạng
- Cặp ghép trên đồ thị hai phía
Xử lý chuỗi
- Thuật toán Manacher
- Hàm băm
- Thuật toán Z
- Thuật toán KMP
- Thuật toán Bayer-Moore
- Thuật toán Rabin-Karp
- Trie
- Suffix Array, Suffix Tree, Suffix Automata
- Eartree
- Aho-Corasick
- Regular Expression
Số học và tổ hợp
- Số học
- Tổ hợp
Ma trận
- Nhân ma trận
- Lũy thừa ma trận
- Phương trình và hệ
- Fast Fourier Transform
Hình học
- Sweep line
- Nearest Neighbor Search
Lý thuyêt trò chơi
- Cây quyết định
- Minimax
- Trò chơi Nim
- Định lý Sprague-Grundy
Các chuyên đề đặc biệt
Các bài toán chọn lọc