2.1. Cây phân đoạn (Interval Tree)
2.2. Cây nhị phân chỉ số (Binary Indexed Tree)
2.3. Bảng thưa (Sparse Table)
2.4. Kĩ thuật Chia căn (Squaroot Decomposition)
2.5. Trie Tree
2.6. Tìm kiếm tam phân (Tenary Searching)
5.1. Quy hoạch động đổi trạng thái
5.2. Quy hoạch động với kĩ thuật Nhân ma trận
5.3. Quy hoạch động bitmask
5.4. Quy hoạch động chữ số
5.5. Quy hoạch động vị trí - cấu hình
5.6. Quy hoạch động Chia để trị
5.7. Kĩ thuật Bao lồi
Có bao giờ bạn phải đau đầu vì để quên chiếc ví ở đâu đó trong nhà mà tìm mãi không thấy? Hay việc các bạn nữ luôn không thể nào tìm thấy bộ quần áo phù hợp để lên phố mặc dù số lượng trang phục xếp nặng trĩu trong tủ quần áo?
Cuộc sống chúng ta luôn gắn liền với việc tìm kiếm. Từ một đứa trẻ tò mò tìm kiếm khám phá từng điều thú vị của thế giới đến khi trưởng thành chúng ta phải chật vật tìm kiếm một nửa mảnh ghép còn lại của đời mình, mà ... có nhiều người còn phải chịu thua số phận và đành cam lòng gắn lên mình danh hiệu "FA".
Đừng nản chí, để giúp bạn giải quyết những vấn đề đó, hôm nay chúng ta sẽ cùng khám phá về thuật toán tìm kiếm trong lập trình - một giải thuật quen thuộc, hữu ích vô cùng trong Tin học mà còn có thể áp dụng ra đời sống, giúp bạn tìm thấy chân ái của đời mình!
Cùng Viblo tìm hiểu về các giải thuật Tìm kiếm tại series này nhé!
Các kỹ năng bổ trợ như:
- Kĩ thuật Hai con trỏ (Two pointers)
- Kĩ thuật Rời rạc hóa (Discretizing)
- Truy vấn cập nhật đoạn (Range Update Queries)
- Thao tác xử lý bit (Bit manipulation)
- Duyệt phân đôi tập hợp (Meet in the middle)
- Hình học tính toán
Lập trình C++ cơ bản - Định hướng Lập trình thi đấu
4.1. Giải thuật Rolling - Hash 4.2. Trie 4.3. KMP Searching 4.4. Z Function 4.5. Thuật toán Manacher
1.1. Đếm các ước của một số nguyên dương N trong O(N^1/3) 1.2. Xác suất (Probabilities) 1.3. Hàm nhân tính (Multiplicative Function) 1.4. Hình học cơ bản 1.5. Phương trình Diophantine
10.1. Tổng quan về tính toán hình học (Computational Geometry) 10.2. Bao lồi 10.3. Số giao điểm của các đoạn thẳng 10.4. Truy vấn hàng xóm gần nhất 10.5. Truy vấn phạm vi
9.1. Ma phương 9.2. Tối ưu tích của chuỗi ma trận 9.3. Lũy thừa ma trận
7.1. Giới thiệu về game theory trong lập trình thi đấu (phần 1) 7.2. Giới thiệu về game theory trong lập trình thi đấu (phần 2) 7.3. Giới thiệu về game theory trong lập trình thi đấu (phần 3) 7.4. Giới thiệu về game theory trong lập trình thi đấu (phần 4) 7.5. Zero-sum games với hữu hạn hai người (phần 1) 7.6. Zero-sum games với hữu hạn hai người (phần 2) 7.7. Trò chơi 2 người hữu hạn (phần 1) 7.8. Trò chơi 2 người hữu hạn (phần 2) 7.9. Trò chơi hữu hạn dạng mở rộng (phần 1) 7.10. Trò chơi hữu hạn dạng mở rộng (phần 2) 7.11. Trò chơi hữu hạn với thông tin không đầy đủ (phần 1) 7.12. Trò chơi hữu hạn với thông tin không đầy đủ (phần 2) 7.13. Trò chơi bất hợp tác dạng mở rộng 7.14. Trò chơi lặp lại 7.15. Trò chơi tiến hóa 7.16. Hợp tác chuyển đổi lợi ích 7.17. Mô hình hợp tác
6.1. Một số ứng dụng nâng cao của giải thuật DFS 6.1.1. Cây DFS và bài toán định chiều đồ thị. Bài toán tìm khớp và cầu 6.1.2. Giải thuật Tarjan tìm thành phần liên thông mạnh
6.2. Bài toán đường đi ngắn nhất 6.2.1. Thuật toán Dijsktra 6.2.2. Thuật toán Bellman Ford 6.2.3. Thuật toán Floyd Warshall
6.3. Cây khung nhỏ nhất
6.4. Bài toán tìm cha chung gần nhất (LCA)
6.5. Quy hoạch động trên cây
6.6. Sắp xếp topo và ứng dụng
6.7. Network Flow (Luồng cực đại trên mạng) 6.7.1. Giới thiệu về luồng và các bài toán kinh điển trên luồng 6.7.2. Thiết kế giải thuật cho bài toán tìm luồng cực đại (phần 1) 6.7.3. Thiết kế giải thuật cho bài toán tìm luồng cực đại (phần 2)
6.8. Các lớp đồ thị đặc biệt
6.9. Đồ thị đẳng cấu
6.10. Phân tích một số bài toán đồ thị khó
Cùng Viblo tìm hiểu về thuật toán Quy hoạch động tại series này nhé!
Cùng Viblo tìm hiểu về phương pháp xử lý số nguyên lớn trong C++ tại series này nhé!
- Tổng quan về đồ thị
- Biểu diễn đồ thị trong máy tính
- Các giải thuật tìm kiếm trên đồ thị
- Vấn đề tìm Chu trình trên đồ thị
- Đồ thị Euler và chu trình Euler
- Đồ thị Hamilton và chu trình Hamilton
Cùng Viblo tìm hiểu về Thiết kế giải thuật trong series này nhé!
Cùng Viblo tìm hiểu về Cấu trúc dữ liệu tại series này nhé!
Cùng Viblo tìm hiểu các vấn đề về Toán học trong lập trình thi đấu trong series này nhé!
Sắp xếp là một hành động quen thuộc trong cuộc sống hằng ngày của chúng ta, đó là những hành động, sự việc quen thuộc như:
- Mẹ dạy cho em bé gấp và sắp xếp quần áo theo một trật tự hợp lí.
- Thầy giáo chủ nhiệm sắp xếp học sinh trong lớp ngồi theo vị trí cụ thể.
- Học sinh sắp xếp sách vở vào từng ngăn của cặp sách trước khi đến trường.
Vậy còn trong tin học, khái niệm "sắp xếp" có giống với trong cuộc sống? Hãy cùng Viblo tìm hiểu các giải thuật sắp xếp qua Series này nhé