Skip to content

Repository files navigation

Competitive Programming Guide

These topics and concepts essential for competitive programming.

For the complete schedule, please refer to the Complete Schedule and Problem List.

Algorithms:

  1. Searching and Sorting: Binary search, Merge sort, Quick sort.
  2. Graph Algorithms: Breadth-first search (BFS), Depth-first search (DFS), Dijkstra's algorithm, Floyd-Warshall, Kruskal's algorithm, Prim's algorithm, Topological sort.
  3. Dynamic Programming: Understanding the concept of state, memoization, and tabulation.
  4. Greedy Algorithms: Activity selection, Fractional knapsack, etc.
  5. Divide and Conquer: Master theorem, Strassen’s Matrix Multiplication, Closest Pair of Points.
  6. Backtracking: N-Queens problem, Hamiltonian cycle, Sudoku solver.
  7. String Algorithms: KMP, Z-algorithm, Rabin-Karp, Manacher's algorithm.
  8. Number Theory: Euclidean algorithms, Modular arithmetic, Fermat’s theorem, Euler’s totient function.
  9. Bit Manipulation: Basic operations, Bitmasking.
  10. Geometry: Convex hull, Line intersection.

Data Structures:

  1. Arrays and Strings.
  2. Linked Lists: Singly linked list, Doubly linked list.
  3. Stacks and Queues.
  4. Trees: Binary trees, Binary search trees, AVL trees, Segment trees, Fenwick trees.
  5. Heaps: Binary heap, Fibonacci heap.
  6. Hashing: Hash table, Hash functions.
  7. Graphs: Adjacency matrix, Adjacency list.
  8. Disjoint Set: Union-find data structure.
  9. Tries.

Standard Template Library (STL) in C++:

  1. Containers: Vector, List, Deque, Set, Multiset, Map, Multimap.
  2. Algorithms: Sort, Reverse, Permute, Lower_bound, Upper_bound.
  3. Iterators.
  4. Utility Classes: Pair, Stack, Queue.

Mathematics:

  1. Combinatorics: Permutations, Combinations, Pigeonhole principle.
  2. Probability.
  3. Number Theory: Prime numbers, Greatest common divisor, Least common multiple.
  4. Geometry: Basic concepts about points, lines, angles, and polygons.
  5. Linear Algebra: Matrices, Determinants.
  6. Calculus: Especially if dealing with optimization problems.

Miscellaneous:

  1. Recursion.
  2. Problem-solving Paradigms: Brute force, Sliding window.
  3. Advanced Data Structures: Suffix arrays, Suffix trees, Treap, etc.

About

Basic Problem Solving is a collection of beginner-friendly programming challenges aimed at improving problem-solving skills. It covers a range of topics, from algorithms to data structures

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages