Intro to Competitive Programming
Learn about questions types common in USACO Bronze and Silver
Basic Programming Knowledge
Prerequisites
Intermediate
Skill Level
10
Number of Lessons
Course Content:
Lesson 1: Introduction to Time Complexity, Data Structures, and Simulation
- Understanding time complexity and its importance in competitive programming.
- Overview of essential data structures: arrays, linked lists, stacks, and queues.
- Introduction to C++ Standard Template Library (STL) containers like vectors and sets.
- Simulating processes using loops and conditionals in problem-solving.
Lesson 2: Complete Search
- Introduction to complete search algorithms.
- Brute-force approach and basic complete search techniques.
- Applying recursion and backtracking in complete search problems.
- Implementing complete search algorithms in C++.
Lesson 3: Sorting and Sets
- Introduction to sorting algorithms (e.g., bubble sort, insertion sort).
- Understanding sorting’s role in competitive programming.
- C++ STL sets and maps for efficient data storage.
- Manipulating sorted data and solving problems using sets.
Lesson 4: Introduction to Greedy Algorithms, Ad Hoc Problems, and Graphs
- Overview of greedy algorithms and their approach to problem-solving.
- Applying greedy algorithms with sorting to optimize solutions.
- Solving Ad Hoc problems using problem-specific strategies.
- Introduction to graph data structure and representation.
Lesson 5: Prefix Sums
- Introduction to Prefix Sums and their significance.
- Understanding the prefix sum concept and its applications.
- Implementing Prefix Sums for efficient range queries.
- Solving problems using Prefix Sums.
Lesson 6: Sorting and Searching
- Advanced sorting algorithms (e.g., merge sort, quicksort).
- Using custom comparators for non-standard sorting orders.
- Two pointers technique for specific problem-solving scenarios.
- Applying greedy algorithms with sorting for optimal solutions.
- Introduction to Binary Search and its applications.
Lesson 7: Graphs – Traversal and Flood Fill
- Graph traversal techniques: Depth-First Search (DFS) and Breadth-First Search (BFS).
- Applying DFS and BFS to explore graphs and solve problems.
- Introduction to Flood Fill algorithm and its usage.
Lesson 8: Introduction to Tree Algorithms and Functional Graphs
- Understanding tree data structure and tree algorithms.
- Applying tree algorithms for tree-related problems.
- Introduction to functional graphs and their usage in competitive programming.