# Chuyên đề học sinh giỏi Tin học THCS - THPT
###### tags: `class`
## Toán học trong lập trình
- GCD, LCM
- Số học về phần dư, đồng dư
- Thuật toán Euclid mở rộng, nghịch đảo module
- Phép nhân Ấn Độ, lũy thừa nhị phân
- Số nguyên tố, sàng Eratosthenes, phân tích thừa số thành nhân tử
- Các hệ đếm
- Tổ hợp, chỉnh hợp, hoán vị
- Số hoàn hảo, số Fibonacci, số Catalan...
- Hình học tính toán
## Thiết kế giải thuật
- Tham lam
- Đệ quy, chia để trị
- Vét cạn bằng quay lui
- Quy hoạch động
## Cấu trúc dữ liệu
- Mảng
- Xâu
- Từ điển (dict, map)
- Tập hợp
- Ngăn xếp
- Hàng đợi
- Hàng đợi hai đầu
- Hàng đợi ưu tiên
- Đồ thị
- Cây
## Giải thuật
- Sắp xếp
- Tìm kiếm
- Tìm kiếm nhị phân, tam phân
## Một số kỹ thuật đặc biệt
- Tổng tiền tố
- Hai con trỏ
- Mảng hậu tố
- Sqrt decomposition, Mo's algorithm
- Bao hàm - loại trừ
- Thao tác trên bit
## Đồ thị
- Tìm kiếm trên đồ thị: BFS, DFS
- Đường đi và chu trình: Euler và Hamilton
- Định chiều đồ thị, khớp và cầu
- Các thành phần liên thông
- Tìm đường đi ngắn nhất
- Cây khung nhỏ nhất
- Sắp xếp topo
- Đồ thị hai phía
- Luồng cực đại trên mạng