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.