Berikut adalah daftar lengkap algoritma dan struktur data yang harus dikuasai untuk Olimpiade Komputer, diurutkan berdasarkan tingkat kesulitan dan prioritas:
Level 1: Fundamental (Pemula)
1. Kompleksitas Algoritma
- Big O Notation
- Analisis waktu dan ruang
2. Struktur Data Dasar
- Array dan String
- Stack dan Queue
- Linked List
- Hash Table / Hash Map
3. Algoritma Dasar
- Linear Search dan Binary Search
- Sorting: Bubble, Selection, Insertion, Merge, Quick Sort
- Two Pointers Technique
- Sliding Window
4. Matematika Dasar
- Bilangan Prima (Sieve of Eratosthenes)
- GCD dan LCM (Euclidean Algorithm)
- Modular Arithmetic
- Fast Power (Exponentiation by Squaring)
Level 2: Intermediate (Menengah)
5. Rekursi dan Backtracking
- Pemahaman rekursi mendalam
- Backtracking untuk permutasi, kombinasi
- N-Queens Problem
- Sudoku Solver
6. Dynamic Programming (DP)
- Fibonacci, Coin Change
- Knapsack Problem (0/1 dan Unbounded)
- Longest Common Subsequence (LCS)
- Longest Increasing Subsequence (LIS)
- Edit Distance
- Matrix Chain Multiplication
- DP on Trees
- Digit DP
- Bitmask DP
7. Graph – Dasar
- Representasi Graph (Adjacency List/Matrix)
- DFS (Depth-First Search)
- BFS (Breadth-First Search)
- Cycle Detection
- Topological Sort
- Connected Components
8. Graph – Shortest Path
- Dijkstra’s Algorithm
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- 0-1 BFS
9. Greedy Algorithms
- Activity Selection
- Fractional Knapsack
- Huffman Coding
- Job Sequencing
10. Divide and Conquer
- Merge Sort, Quick Sort
- Binary Search variants
- Closest Pair of Points
Level 3: Advanced (Lanjutan)
11. Tree Algorithms
- Binary Tree Traversal
- Binary Search Tree (BST)
- AVL Tree dan Red-Black Tree
- Segment Tree
- Fenwick Tree (Binary Indexed Tree)
- Lowest Common Ancestor (LCA)
- Heavy-Light Decomposition
12. Graph – Advanced
- Minimum Spanning Tree (Kruskal, Prim)
- Strongly Connected Components (Kosaraju, Tarjan)
- Articulation Points dan Bridges
- Bipartite Matching
- Maximum Flow (Ford-Fulkerson, Edmonds-Karp)
- Min-Cut Max-Flow Theorem
13. String Algorithms
- KMP (Knuth-Morris-Pratt)
- Rabin-Karp Algorithm
- Z-Algorithm
- Trie (Prefix Tree)
- Suffix Array dan Suffix Tree
- Aho-Corasick Algorithm
- Manacher’s Algorithm (Longest Palindrome)
14. Advanced Data Structures
- Disjoint Set Union (DSU / Union-Find)
- Sparse Table
- Square Root Decomposition
- Persistent Data Structures
Level 4: Expert (Mahir)
15. Advanced DP
- DP Optimization (Convex Hull Trick, Divide and Conquer Optimization)
- SOS DP (Sum over Subsets)
- DP on DAG
- Profile DP
16. Computational Geometry
- Convex Hull (Graham Scan, Jarvis March)
- Line Intersection
- Point in Polygon
- Sweep Line Algorithm
- Closest Pair of Points
17. Number Theory
- Prime Factorization
- Euler’s Totient Function
- Chinese Remainder Theorem
- Modular Inverse
- Matrix Exponentiation
18. Game Theory
- Nim Game
- Grundy Numbers (Sprague-Grundy Theorem)
- Minimax Algorithm
- Alpha-Beta Pruning
19. Advanced Graph
- Network Flow variants
- Min Cost Max Flow
- Hungarian Algorithm
- 2-SAT Problem
- Centroid Decomposition
20. Advanced Techniques
- Meet in the Middle
- Binary Lifting
- Mo’s Algorithm
- Parallel Binary Search
- FFT (Fast Fourier Transform) untuk polinomial
Keterampilan Tambahan Penting
Problem Solving Skills:
- Pattern recognition
- Breaking down complex problems
- Optimization thinking
Implementation Skills:
- Clean dan efficient code
- Debugging cepat
- Template management
Contest Strategy:
- Time management
- Problem selection
- Partial points strategy
Rekomendasi Urutan Belajar
Untuk persiapan Olimpiade yang sistematis, saya sarankan:
- 3-6 bulan pertama: Fokus pada Level 1 dan mulai Level 2
- 6-12 bulan: Kuasai Level 2, terutama DP dan Graph dasar
- 12-18 bulan: Level 3, fokus pada Tree dan String algorithms
- 18+ bulan: Level 4 dan spesialisasi pada area tertentu
Platform Latihan yang Direkomendasikan:
- Codeforces
- AtCoder
- CSES Problem Set
- LeetCode
- HackerRank
- USACO Training
Leave a Reply