└── README.md /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Problem solving Squad roadmap 3 | 4 | 5 | 6 | ## Important topics 7 | 8 | ### Level 0 9 | - Intro & Basics 10 | - Data Types 11 | - Variables 12 | - I/O 13 | - Conditional statement 14 | - Loops & Arrays 15 | - Strings & Functions 16 | - Complexity & Binary Search 17 | 18 | ### Level 1 19 | - Ad-hoc problems 20 | - Freq. Array 21 | - Cumulative Sum 22 | - Two Pointers 23 | - Greedy 24 | - Sliding Windows 25 | - STL I [Linear Containers] 26 | - Vectors 27 | - Queues 28 | - Deques 29 | - Stacks 30 | - Pairs 31 | - STL II [Non-Linear Containers] 32 | - Map 33 | - Set 34 | - Priority 35 | - Queue & Structs 36 | - Bit-masking & Iterative Brute Force 37 | - Recursion & Recursive Brute Force 38 | 39 | ### Level 2 40 | - Math I 41 | - Primes 42 | - Sieve 43 | - Factorization 44 | - Factorial 45 | - GCD & LCM 46 | - Math II 47 | - Fibonacci 48 | - Big-integer 49 | - Modular Arithmetic 50 | - Binary Exponentiation 51 | - Math III 52 | - Permutations & Combinations 53 | - Preprocessing 54 | - DP I 55 | - Intro 56 | - MaxRangeSum 57 | - KnapSack 58 | - CoinChange 59 | - DP II 60 | - Longest Increasing Subsequence (LIS) 61 | - Longest Common Subsequence (LCS) 62 | - Consecutive Dynamic Ranges 63 | 64 | - Graphs 65 | - Graph Traversal and Basic Algorithms 66 | + Graph Traversal 67 | + Articulation Points and Bridges 68 | + Bridge Tree 69 | + Strongly Connected Components 70 | + Kosaraju Algorithm 71 | + Biconnected Components 72 | - Shortest Path 73 | + Single-Source Shortest Path 74 | + All-Pairs Shortest Path 75 | - Minimum Spanning Tree 76 | + Prim's Algorithm 77 | + Kruskal's Algorithm 78 | - Special Graphs 79 | + Euler Tour (for Eulerian Graphs) 80 | + Maximum Cardinality Bipartite Matching 81 | - Max Flow 82 | + Edmonds-Karp Algorithm 83 | + Dinic's Algorithm 84 | + Tarjan's (Push-Relabel) Algorithm- Geometry 85 | - Strings algorithms 86 | - Prefix Automaton (KMP) 87 | - Suffix Trie 88 | - Suffix Array 89 | - Suffix Automaton 90 | - Aho Corasick 91 | - Z Algorithm 92 | - Manacher 93 | 94 | ## Related 95 | 96 | 97 | #### [Junior training sheet (by: Dr. Mostafa Saad)](https://docs.google.com/spreadsheets/d/1iJZWP2nS_OB3kCTjq8L6TrJJ4o-5lhxDOyTaocSYc-k/edit#gid=84654839) 98 | 99 | #### Dr. Mostafa Saad: 100 | 101 | Please, check out the sheet before reading. The sheet is: 102 | 103 | Complete and consistent roadmap for newcomers: What to solve & algorithms to learn in order 104 | 105 | In the bottom row, there are different sheet pages such as Faq, Topics, CF-C2 106 | 107 | 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 108 | 109 | Covering most of the topics needed up to Codeforces Div2-D 110 | 111 | Problems increase in difficulty per topic with intermediate easy/medium problems + ad-hoc problems 112 | 113 | Speed problems to maintain speed goals 114 | 115 | 116 | + ### One can train in one of the following ways: 117 | 118 | - #### Blind-Order training style: 119 | 120 | Problems are distributed in sheets CF-A, CF-B, CF-C1, ....CF-D3 121 | 122 | It targets learning the knowledge/skills in a consistent and balanced way 123 | 124 | Every sheet page is on average harder than the previous sheet page 125 | 126 | This is my recommended way, though most camps/training-approaches don't use this style 127 | 128 | + #### Topics-Based training style: 129 | 130 | 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 131 | 132 | Ideas Quality column: P5 (important), P4(very interesting), P3(interesting), P2(good), P1(ok), Empty (normal) 133 | 134 | You can train using Blind-Order, and use Topics page as a guide to skip some problems 135 | 136 | Advantage: Mastering the algorithm till solving some hard problems in a short time 137 | 138 | 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 139 | 140 | 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 141 | --------------------------------------------------------------------------------