Skip to content

CIS-Team/ProblemSolving-Squad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 

Repository files navigation

Problem solving Squad roadmap

Important topics

Level 0

  • Intro & Basics
    • Data Types
    • Variables
    • I/O
    • Conditional statement
  • Loops & Arrays
  • Strings & Functions
  • Complexity & Binary Search

Level 1

  • Ad-hoc problems
    • Freq. Array
    • Cumulative Sum
    • Two Pointers
    • Greedy
    • Sliding Windows
  • STL I [Linear Containers]
    • Vectors
    • Queues
    • Deques
    • Stacks
    • Pairs
  • STL II [Non-Linear Containers]
    • Map
    • Set
    • Priority
    • Queue & Structs
  • Bit-masking & Iterative Brute Force
  • Recursion & Recursive Brute Force

Level 2

  • Math I

    • Primes
    • Sieve
    • Factorization
    • Factorial
    • GCD & LCM
  • Math II

    • Fibonacci
    • Big-integer
    • Modular Arithmetic
    • Binary Exponentiation
  • Math III

    • Permutations & Combinations
    • Preprocessing
  • DP I

    • Intro
    • MaxRangeSum
    • KnapSack
    • CoinChange
  • DP II

    • Longest Increasing Subsequence (LIS)
    • Longest Common Subsequence (LCS)
    • Consecutive Dynamic Ranges
  • Graphs

    • Graph Traversal and Basic Algorithms
      • Graph Traversal
      • Articulation Points and Bridges
      • Bridge Tree
      • Strongly Connected Components
      • Kosaraju Algorithm
      • Biconnected Components
    • Shortest Path
      • Single-Source Shortest Path
      • All-Pairs Shortest Path
    • Minimum Spanning Tree
      • Prim's Algorithm
      • Kruskal's Algorithm
    • Special Graphs
      • Euler Tour (for Eulerian Graphs)
      • Maximum Cardinality Bipartite Matching
    • Max Flow
      • Edmonds-Karp Algorithm
      • Dinic's Algorithm
      • Tarjan's (Push-Relabel) Algorithm- Geometry
  • Strings algorithms

    • Prefix Automaton (KMP)
    • Suffix Trie
    • Suffix Array
    • Suffix Automaton
    • Aho Corasick
    • Z Algorithm
    • Manacher

Related

Dr. Mostafa Saad:

Please, check out the sheet before reading. The sheet is:

Complete and consistent roadmap for newcomers: What to solve & algorithms to learn in order

In the bottom row, there are different sheet pages such as Faq, Topics, CF-C2

CF-C1, C2 are (Codeforces Div2 C problems (or similar level from other OJs), but from easy to hard). Same for CF-D1, D2, D3

Covering most of the topics needed up to Codeforces Div2-D

Problems increase in difficulty per topic with intermediate easy/medium problems + ad-hoc problems

Speed problems to maintain speed goals
  • One can train in one of the following ways:

    • Blind-Order training style:

        Problems are distributed in sheets CF-A, CF-B, CF-C1, ....CF-D3
      
        It targets learning the knowledge/skills in a consistent and balanced way
      
        Every sheet page is on average harder than the previous sheet page
      
        This is my recommended way, though most camps/training-approaches don't use this style
      
    • Topics-Based training style:

        See the sheet page (Topics1). It has the same sheet problems (CF-A to CF-D3) ordered by category and level, around 950 problems. Also checkout Topics2 page
      
        Ideas Quality column: P5 (important), P4(very interesting), P3(interesting), P2(good), P1(ok), Empty (normal)
      
        You can train using Blind-Order, and use Topics page as a guide to skip some problems
      
        Advantage: Mastering the algorithm till solving some hard problems in a short time
      
        Disadvantage: Discovering the algorithm behind the problem is an important skill. Given that you know the topic, you lose a good space to improve this skill
      
        Disadvantage: Being in the mode of specific algorithm lets you solve many of it easier. However, when solving in real contests, your mind is not so active on the specific topic