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