This repository includes some resources for general topics in competitive programming and algorithms in general. I have used the sources below during a 5-day long algorithm camp I've given to members of METU Computer Club who are starting to competitive programming. The content doesn't include advanced topics and is aimed at people who have basic knowledge of programming but just starting to dive into algorithms.
- Competitive Programmer's Handbook
- inzva's Bundles (Some of them are in Turkish)
- What are programming contests? (in Turkish)
- Complexity: Big O notation, Big Theta and Big Omega
- Example Problem
- List, Dictionary, Tuple, Set (and array, vector, map, pair, tuple, set in C++)
- Introduction to Graph Concepts
- Recursion: (palindrome & fibonacci)
- Stack & Queue: (parantheses)
- Priority Queue/Heap
- Insertion Sort
- Merge Sort
- Counting Sort
- Binary Search
- Finding Prime Numbers (With Sieve of Eratosthenes)
- Factorization
- Logn Exponentiation
- Fibonacci [Naive and Memoization, Tabulation]
- canSum [Naive and Memoization, Tabulation]
- bestSum [Naive and Memoization, Tabulation]
- howSum [Naive and Memoization, Tabulation]
- maxPath [Naive and Memoization, Tabulation]
Additional Sources: Dynamic Programming Video from freeCodeCamp
- Representing Graphs
- Graph Traversals (Depth First Search, Breadth First Search)
- Shortest Path Algorithms (Dijkstra, Floyd-Warshall)
Additional Sources: Graph Theory Tutorial from freeCodeCamp
- Spanning Trees (Kruskal, Prim)
- Greedy Algorithms
- Bit Manipulation
- Range Queries (Sum queries, Segment Trees)
In the last two days, we have used Competitive Programmer's Handbook during the algorithm camp. You can find the example codes I have shown from the book there. Also, the last day was more like a mix of topics. Those are the topics I wanted to mention at least a bit.