An open API service indexing awesome lists of open source software.

https://github.com/cis-team/problemsolving-squad

Problem Solving Squad Roadmap
https://github.com/cis-team/problemsolving-squad

algorithms cis-team computer-science problem-solving problemsolving

Last synced: 4 months ago
JSON representation

Problem Solving Squad Roadmap

Awesome Lists containing this project

README

        

# 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

#### [Junior training sheet (by: Dr. Mostafa Saad)](https://docs.google.com/spreadsheets/d/1iJZWP2nS_OB3kCTjq8L6TrJJ4o-5lhxDOyTaocSYc-k/edit#gid=84654839)

#### 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