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
- Host: GitHub
- URL: https://github.com/cis-team/problemsolving-squad
- Owner: CIS-Team
- Created: 2020-04-07T08:37:41.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-01T14:31:03.000Z (over 1 year ago)
- Last Synced: 2024-12-30T12:16:32.699Z (6 months ago)
- Topics: algorithms, cis-team, computer-science, problem-solving, problemsolving
- Homepage:
- Size: 12.7 KB
- Stars: 30
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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