# The Ultimate Topic List(with Tutorials, Problems, and Templates)

### UPDATE May 12, 2024

**I have made the topic list so much better. You can find the updated version here.**

**Please ignore the following list. It’s outdated. Follow the link above.**

#### Introduction

This post took $4$ years to make. And this is the most significant thing that I have ever shared in my whole life.

#### Story

Hi, I have been doing CP for like $4$ years and from the very beginning what I have been feeling is a need for a comprehensive topic list that will contain all sorts of topics from easy to advanced with corresponding tutorials, problem lists and templates so that I wouldn’t have to look at different sites, from here to there. So what do you do when you think something is missing from the world? Yeah, you create that thing! So here I am, sharing the ultimate topic list that you will need in CP.

When I say that it took me $4$ years to make it, I genuinely mean it. I have been collecting them from the inception of my CP journey and yesterday I thought that it got its almost complete shape. You may not imagine the sheer excitement hidden under each of the characters of this post.

#### Payment

You can pay me just by upvoting this blog and by being a better programmer and human than what you are right now.

#### About the Topic List

I have added a few tutorials for each topic. You can also find more of them by just using your best companion — Google.

Added few problems for each topic. But you may notice that some of the topics don’t have any problem attached. That’s because under the attached tutorial section you will find lots of problems with that topic. If you want more problems, then you can do it just by using Google.

I have attached my template for each topic. You may not call it a template because some of them don’t support the generalized use of the topic. But you can use them easily if you understand the topic and solve problems using that template.

Lastly, I tried to state the difficulty of each topic by numbers from $1$ to $3$ so that people can understand what are the best topics for them. The distribution is as follows:

- $1$ — If your rating is $1600 - 1899$
- $2$ — If your rating is $1900 - 2399$
- $3$ — If your rating is $2400+$.

If you are a beginner then just learn basic topics and solve problems.

#### Topic List

## Category: Math

### Category: Math

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

1 | Matrix Exponentiation | 1 | 1 | code | 1 |

2 | FFT | 1 | 1 | code | 2 |

3 | NTT | 1 | 1 | code code | 2 |

4 | Online NTT | 1 | 1 2 | code | 3 |

5 | FWHT | 1 | 1 | code | 2 |

6 | Lagrange Interpolation | 1 | 1 2 | code | 2 |

7 | Lagrange Interpolation with Polynomial Extraction | 1 | code | 3 | |

8 | Polynomial Sum | 1 | 1 | code | 3 |

9 | Polynomial with Binomial Coefficients | 1 | 1 | code | 3 |

10 | Subset Sum Problem | 1 2 | code | 3 | |

11 | Generating Functions | 1 2 | 3 | ||

12 | Polynomial Structure | 1 | 1 | code | 3 |

13 | Polynomial Factorization of (x^n - 1) | 1 | 1 | code | 3 |

14 | Berlekamp Messey | 1 | 1 | code | 3 |

15 | Reeds–Sloane Algorithm | 1 | code | 3 | |

16 | Linear Recurrence using Cayley-Hamilton theorem | 1 | code | 2 | |

17 | Linear Recurrence using Generating Functions | 1 | 1 | code | 3 |

18 | Linear Recurrence with Polynomial Coefficients | 1 | code | 3 | |

19 | Linear Recurrence on Matrices | 1 | 1 | 3 | |

20 | Generating Function of a Linear Recurrence | 1 | code | 2 | |

21 | Gaussian Elimination | 1 | 1 | code | 2 |

22 | Gaussian Elimination under Modulo | 1 | 1 | code | 2 |

23 | Gaussian Elimination Modulo 2 | 1 | 1 2 | code | 2 |

24 | Determinant under Prime Modulo | 1 | 1 | code | 2 |

25 | Determinant under Composite Modulo | 1 | code | 2 | |

26 | Determinant of Product Matrix | 1 | code | 3 | |

27 | Determinant of Sparse Matrix | 1 | code | 3 | |

28 | Determinant of Permutant Matrix | 1 | code | 3 | |

29 | Determinant of Cyclic Matrix | 1 | code | 3 | |

30 | Cauchy–Binet formula | 1 | 1 | 3 | |

31 | Thomas Algorithm | 1 | code | 2 | |

32 | Inverse of a Matrix | code | 3 | ||

33 | Inverse of a Matrix modulo 2 | 1 | code | 3 | |

34 | Basis Vector | 1 | 1 | code | 2 |

35 | Basis Vector Reduced Row Echelon Form. | 1 | 1 | code | 2 |

36 | Basis Vector ft Weighted Linearly Independent Vectors. | 1 | code | 2 | |

37 | Permanent of a Matrix | 1 | code | 2 | |

38 | All Possible Perfect Matching XOR Values | 1 | code | 2 | |

39 | Hafnian of a Matrix | 1 | 1 | code | 3 |

40 | Vandermonde Matrix | 1 | 1 | code | 3 |

41 | Freivalds Algorithm | 1 | code | 3 | |

42 | Characteristic Polynomial Faster / Hesserberg Matrix | 1 | 1 | code | 3 |

43 | Faulhaber's Formula Fastest | 1 | 1 | code | 3 |

44 | Lagrange Multiplier | 1 | 1 2 | code | 3 |

45 | Titu's Lemma | 1 2 | 1 2 | 2 | |

46 | Simplex Algorithm | 1 | 1 | code | 3 |

47 | Integration | 1 | code code | 2 | |

48 | Line Integral | 1 2 | 2 | ||

49 | The Slime Trick | 1 | 1 2 | 3 | |

50 | Gauss's Eureka Theorem | 1 | 1 | 2 | |

51 | LTE Lemma | 1 | 1 | 2 | |

52 | Expected Value | 1 | 1 | ||

53 | Expected Value Powers Technique | 1 | 2 | ||

54 | Finite Field Arithmetic Binary | 1 | 1 | code | 2 |

55 | Max Convolution between Convex Funtions | code | 2 |

## Category: Number Theory

### Category: Number Theory

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

56 | Binary Exponentiation | 1 | 1 | 1 | |

57 | Modular Inverse | 1 | 1 | 1 | |

58 | Sieve | 1 | 1 | code | 1 |

59 | Sieve upto 1e9 | 1 | code | 3 | |

60 | Extended Euclid | 1 | code | 1 | |

61 | Combinatorics Basics | 1 | code | 1 | |

62 | Lucas Theorem | 1 | code | 1 | |

63 | nCr Modulo Any Mod | 1 2 | 1 | code | 2 |

64 | Prefix Sum Queries of nCi | 1 2 | code | 2 | |

65 | Sum of nCi over a Fixed Congruence Class | 1 | code | 2 | |

66 | "Sum of nCr(a(i) k) for each k from 1 to n" | 1 2 | code | 2 | |

67 | Sum of nCi for a Fixed Large n | 1 | code | 3 | |

68 | Phi Function | 1 | code | 1 | |

69 | Power Tower | 1 | 1 2 | code | 2 |

70 | Mobius Function | 1 | 1 | code | 1 |

71 | CRT | 1 | 1 2 3 4 | code | 1 |

72 | Linear Congruence Equation | 1 | code | 1 | |

73 | Pollard Rho | 1 | 1 | code | 2 |

74 | Primitive Root | 1 | 1 | code | 2 |

75 | Multiplicative Order / Carmichael's Lambda Function | 1 | 1 | code | 2 |

76 | Discrete Log | 1 | 1 2 | code | 2 |

77 | Discrete Root | 1 | 1 | code | 2 |

78 | Discrete Root in O(p^(1/4)) using Tonelli-Shanks Algorithm | 1 | 1 | code | 3 |

79 | Number of Distinct Kth Powers Modulo n | 1 | code | 3 | |

80 | Number of Solutions to x^2 = 1 mod m | 1 | 1 | code | 2 |

81 | Tonelli Shanks Algorithm | 1 | 1 2 | code | 3 |

82 | Pells Equation | 1 2 | 1 | code | 3 |

83 | Linear Diophantine Equation with Two Variables | 1 | 1 | code | 1 |

84 | Trivariable Linear Diophantine Equation with Nonnegative Solutions | 1 | 1 | code | 3 |

85 | Multivariable Linear Diophantine Equation with Nonnegative Solutions | 1 | 1 2 | code | 3 |

86 | Linear Diophantine With N Unknowns and Two Equations | 1 | code | 3 | |

87 | Floor Sum of Arithmetic Progression | 1 | 1 2 | code | 2 |

88 | Generalized Floor Sum of Arithmetic Progression | 1 | 1 | code | 3 |

89 | Sum of Floors | code | 1 | ||

90 | Number of Nonnegative Integer Solutions to ax+by ≤ c | code | 3 | ||

91 | Number of ax % p in a Range | code | 3 | ||

92 | Smallest Nonnegative Integer x s.t. l ≤ ax % p ≤ r | 1 2 | code | 3 | |

93 | Prime Counting Function | 1 | 1 2 | code | 2 |

94 | K Divisors | 1 2 | code | 3 | |

95 | Smallest Number Having Exactly K Divisors | 1 | code | 2 | |

96 | Sum of The Number of Divisors in cbrt(n) | 1 | code | 3 | |

97 | Linear Sieve for Multiplicative Functions | 1 | code | 1 | |

98 | Min_25 Sieve | 1 2 3 | 1 2 | code | 3 |

99 | Mobius Inversion | 1 | 1 2 | 2 | |

100 | Dirichlet convolution | 1 2 | 1 2 3 | code | 2 |

101 | Number of Solutions to a Basic Linear Algebraic Equation | 1 | 1 | code | 1 |

102 | Number of Solutions to a Basic Linear Algebraic Equation with Variable Upper Bound Constraints | 1 | 1 2 3 | code | 3 |

103 | Partition Function | 1 | 1 | code | 3 |

104 | Stirling Number of the First Kind for Fixed n | 1 | 1 | code | 2 |

105 | Stirling Number of the First Kind for Fixed k | 1 | code | 3 | |

106 | Stirling Number of the Second Kind for Fixed n | 1 | 1 | code | 2 |

107 | Stirling Number of the Second Kind for Fixed k | 1 | 1 | code | 3 |

108 | Bell Number | 1 | code | 2 | |

109 | LCM of Fibonacci Numbers | 1 | 1 | code | 2 |

110 | Phi Field | 1 2 | code | 2 | |

111 | Pisano Period | 1 | 1 2 | code | 3 |

112 | Rational Approximation / Stern-Brocot Tree | 1 2 3 | 1 | code | 3 |

113 | Factoradic Number System | 1 | 1 | code | 2 |

114 | Intersection of Arithmetic Progressions | 1 | code | 1 | |

115 | Continued Fractions | 1 2 | 1 | code | 2 |

116 | Maximum Coprime Product | 1 | code | 2 |

## Category: Graph Theory

### Category: Graph Theory

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

117 | DFS and BFS | 1 2 | 1 | 1 | |

118 | 0/1 BFS | 1 | 1 | 1 | |

119 | Dial's algorithm | 1 | 2 | ||

120 | Inverse Graph | 1 | 1 2 | code | 1 |

121 | LCA | 1 | 1 | code | 1 |

122 | LCA in O(1) | 1 | 1 | code | 2 |

123 | SCC | 1 | 1 | code | 1 |

124 | Incremental SCC | 1 2 | 3 | ||

125 | DFS Tree | 1 | 1 | ||

126 | Rerooting Technique | 1 | 1 | ||

127 | Articulation Bridges and Bridge Tree | 1 2 | 1 2 | code | 1 |

128 | Online Articulation Bridges | 1 | code | 3 | |

129 | Strong Orientation | 1 | 1 | 1 | |

130 | Articulation Points. | 1 | 1 | code | 1 |

131 | Block Cut Tree | 1 | 1 | code | 2 |

132 | Three Edge Connectivity | 1 | 1 2 | code | 3 |

133 | Four Edge Connectivity | 1 | 3 | ||

134 | Dynamic K-Connectivity | 1 | 3 | ||

135 | Prim's MST | 1 | 1 | code | 1 |

136 | Krushkal's MST | 1 | 1 | code | 1 |

137 | Steiner Tree Problem | 1 | 1 | code | 2 |

138 | Boruvka's Algorithm | 1 | 1 | code | 2 |

139 | Minimum Diameter Spanning Tree | 1 | 1 2 | code | 3 |

140 | Manhattan MST | 1 | code | 3 | |

141 | Euclidean MST | 1 | 3 | ||

142 | Directed MST | 1 | 1 | code | 3 |

143 | Dynamic MST | 1 | 1 | code | 3 |

144 | Dijkstra's Algorithm | 1 | 1 | code | 1 |

145 | Dijkstra on Segment Tree | 1 | code | 2 | |

146 | Bellman Ford | 1 | 1 | code | 1 |

147 | Floyd Warshall | 1 | 1 | code | 1 |

148 | Johnsons Alogrithm | 1 | 1 | code | 2 |

149 | SPFA | 1 | 1 | code | 1 |

150 | Cycle Detection | 1 | 1 | code | 1 |

151 | Minimum Weight Cycle For Each Vertex | 1 | code | 2 | |

152 | Minimum Weight Cycle For Each Edge | 1 | code | 2 | |

153 | Dominator tree | 1 | 1 | code | 2 |

154 | 2 SAT | 1 | 1 2 | code | 1 |

155 | 3 SAT | code | 3 | ||

156 | Maximum Clique | 1 2 | 1 | code | 1 |

157 | Number of Different Cliques | code | 2 | ||

158 | Maximum Independent Set | 1 | code | 1 | |

159 | Eulerian Path on a Directed Graph | 1 | 1 | code | 1 |

160 | Eulerian Path on an Undirected Graph | 1 | 1 | code | 1 |

161 | Path Union | 1 2 | code | 2 | |

162 | Path Intersection | 1 | code | 2 | |

163 | Virtual Tree | 1 | 1 2 3 | code | 2 |

164 | Welsh-Powell Algorithm | 1 2 | 2 | ||

165 | Chromatic Number | 1 | 1 | code | 1 |

166 | Chromatic Polynoimial ft Number of DAGs | 1 | code | 3 | |

167 | Dynamic DAG Reachability | 1 | 1 | code | 3 |

168 | Minimum Mean Weight Cycle | 1 | code | 3 | |

169 | Number of 3 and 4 length Cycles | 1 | code | 3 | |

170 | Counting Labeled Graphs | 1 | code | 1 | |

171 | Chordal Graph | 1 | 1 | code | 2 |

172 | Cactus Graph | 1 2 | 1 | 2 | |

173 | Edge Coloring of Simple Graph | 1 2 | code | 3 | |

174 | Edge Coloring of Bipartite Graph | code code | 3 | ||

175 | Dynamic Diameter Online | 1 | code | 3 | |

176 | Tree Orientation to Maximize Pairs of Reachable Nodes | 1 | 1 | code | 3 |

177 | Number of Arborescences with n Nodes | code | 2 | ||

178 | Kirchoffs Theorem ft Number of MSTs | 1 | 1 | code | 2 |

179 | Tuttes Theorem ft Arborescences in a Graph | 1 | 1 | code | 2 |

180 | BEST Theorem | 1 | 2 | ||

181 | System Of Difference Constraints | 1 | 1 | code | 2 |

182 | Prufer Code | 1 | 1 | code | 1 |

183 | Number of Ways to Make a Graph Connected | 1 | 1 | ||

184 | Tree Isomorphism | 1 | 1 2 3 | code | 1 |

185 | Number of Paths of Each Length in a Tree | code | 2 | ||

186 | Ear Decomposition | 1 | 1 | 2 | |

187 | Eppsteins Algorithm | 1 | 1 | code | 3 |

188 | Hamiltonian Path Heuristic Algorithm | 1 | 3 | ||

189 | Erdos Gallai Theorem | 1 | 2 | ||

190 | Havel Hakimi Algorithm | 1 2 | 2 | ||

191 | Dinics Algorithm | 1 | 1 | code | 1 |

192 | Push Relabel Algorithm | 1 | code | 2 | |

193 | Min Cost Max Flow | 1 | 1 2 | code | 2 |

194 | Min Cost Max Flow with Negative Cycles | code | 3 | ||

195 | Maximum Closure Problem | 1 | 1 2 | code | 2 |

196 | Min Cut in a Planar Graph | 1 | 1 | code | 2 |

197 | Max Cut in a Planar Graph | 1 | 3 | ||

198 | Unique Min Cut | 1 | 1 | code | 2 |

199 | L-R Flow | 1 | 1 2 | code code | 2 |

200 | Gomory-Hu Tree | 1 | 1 | code | 3 |

201 | Gomory Hu Tree of a Planar Graph | 1 | code | 3 | |

202 | Stoer Wagner Algorithm | 1 | 1 | code | 3 |

203 | HopCroft Karp Algorithm | 1 | code | 1 | |

204 | Kuhns Algorithm | 1 | 1 | code | 1 |

205 | Hungarian Algorithm | 1 | 1 | code | 1 |

206 | Blossom Algorithm | 1 | 1 | code | 2 |

207 | Blossom Algorithm Weighted | 1 | code | 3 | |

208 | Chinese Postman Problem | 1 | 1 | code | 1 |

209 | ST-numbering | 1 | code | 3 | |

210 | POSET ft Dilworths and Mirskys Theorem | 1 2 | 1 | 2 | |

211 | Stable Marriage Problem | 1 | 1 | code | 2 |

212 | Halls Theorem | 1 | 1 | 1 | |

213 | Maximum Density Subgraph | 1 | 1 | code | 3 |

214 | Randomized Matching | code code | 2 | ||

215 | Number of Perfect Matchings in a Graph | 1 | 1 | code | 3 |

216 | Planarity Check | 1 2 | 3 |

## Category: Data Structures

### Category: Data Structures

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

217 | Segment Tree | 1 | 1 2 | code | 1 |

218 | Segment Tree with Lazy Propagation | 1 | 1 2 | code | 1 |

219 | Persistent Segment Tree | 1 | 1 | code | 1 |

220 | Persistent Segment Tree with Lazy Propagation | 1 | 1 | code | 2 |

221 | Dynamic Segment Tree | 1 | 1 | ||

222 | 2D Dynamic Segment Tree | 1 | code | 2 | |

223 | Iterative Segment Tree | 1 | code | 1 | |

224 | Segment Tree ft Arithmetic Progressions | 1 | code | 1 | |

225 | Segment Tree Merging | 1 | 1 | code | 2 |

226 | Segment Tree Beats | 1 | 1 | code | 3 |

227 | Merge Sort Tree | 1 | 1 | 1 | |

228 | Wavelet Tree | 1 | 1 | code | 1 |

229 | Sparse Table | 1 | 1 | code | 1 |

230 | Disjoint Sparse Table | 1 | 1 | code | 2 |

231 | Sparse Table 2D | 1 | 1 | code | 2 |

232 | BIT | 1 | 1 | code | 1 |

233 | Lower bound on BIT | 1 | 1 | 1 | |

234 | BIT with Range Update and Range Query | 1 | code | 2 | |

235 | 2D BIT with Range Update and Range Query | code | 2 | ||

236 | MOs Algorithm | 1 2 | 1 | code | 1 |

237 | MOs on Tree | 1 | 1 | code | 2 |

238 | MOs with Update | 1 2 | 1 | code | 2 |

239 | MOs Online | 1 | code | 2 | |

240 | MOs with DSU | 1 2 | code | 2 | |

241 | Sweepline MO | 1 | 3 | ||

242 | Trie | 1 | 1 | code | 1 |

243 | Persistent Trie | 1 | 1 | code | 2 |

244 | DSU | 1 | 1 | code | 1 |

245 | Reachability Tree/ DSU Tree | 1 | 1 2 | code | 2 |

246 | DSU with Rollbacks | code | 1 | ||

247 | Partially Persistent DSU | 1 | 1 | code | 3 |

248 | Persistent DSU | 1 | code | 3 | |

249 | Augmented DSU | 1 | code | 2 | |

250 | Queue Undo Trick | 1 | 1 2 | code | 3 |

251 | Dynamic Connectivity Problem | 1 | 1 | code | 2 |

252 | DSU on Tree | 1 | 1 | code | 1 |

253 | SQRT Decomposition | 1 | 1 | 1 | |

254 | SQRT Decomposition Split and Build Technique | 1 | code | 3 | |

255 | Centroid Decomposition | 1 | 1 | 1 | |

256 | Persistent Centroid Decomposition | 1 | code | 3 | |

257 | Binarizing a Tree | 1 | code | 1 | |

258 | HLD ft Subtrees and Path Query | 1 2 | 1 | code | 2 |

259 | HLD ft Persistent Lazy Propagation | 1 | code | 3 | |

260 | LCT | 1 | 1 | code | 2 |

261 | Treap | 1 | 1 | code | 2 |

262 | Implicit Treap | 1 | 1 | code | 2 |

263 | Persistent Treap | 1 2 | code | 3 | |

264 | SQRT Tree | 1 | 1 | code | 3 |

265 | KD Tree | 1 | 1 | code | 2 |

266 | Cartesian Tree | 1 | code | 2 | |

267 | Rope | 1 | 1 | 1 | |

268 | Monotonous Queue | 1 | 1 | code | 1 |

269 | BST using STL | 1 | code | 1 | |

270 | Persistent BST | 1 | 3 | ||

271 | Ordered Set | 1 2 | 1 | code | 1 |

272 | Static to Dynamic Trick | 1 2 | code | 2 | |

273 | Interval Set | code | 2 | ||

274 | Divide and Conquer on Queries | 1 | 2 | ||

275 | Divide and Conquer for Insert and Query Problems | 1 | 1 | code | 2 |

276 | Venice Technique | 1 | 1 | code | 1 |

277 | Permutation Tree | 1 | code | 3 | |

278 | Persistent Array | 1 | code | 1 | |

279 | Persistent Queue | 1 | code | 3 | |

280 | Persistent Meldable Heap | 1 | 1 | code | 2 |

281 | Top Tree | 1 | 1 | code | 3 |

282 | PQ Tree | 1 | 1 | 3 | |

283 | Link Cut Cactus | 1 | 1 | 3 | |

284 | HDLT | 1 | 3 |

## Category: Strings

### Category: Strings

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

285 | KMP | 1 | 1 | code | 1 |

286 | Prefix Automaton | 1 | code | 1 | |

287 | Z algorithm | 1 | 1 | code | 1 |

288 | Aho Corasick | 1 | 1 2 | code | 1 |

289 | Dynamic Aho Corasick | 1 | code | 2 | |

290 | Aho Corasick ft All Pair Occurrence Relation | 1 | code | 2 | |

291 | String Matching using Bitsets | 1 2 | code | 1 | |

292 | String Matching with FFT | 1 | 1 2 | code | 2 |

293 | String Hashing | 1 | 1 2 | code | 1 |

294 | 2D String Hashing | 1 | 1 | code | 2 |

295 | Suffix Array | 1 | 1 | code | 2 |

296 | Isomorphic Suffix Array | 1 | code | 3 | |

297 | Suffix Automaton | 1 | 1 | code | 2 |

298 | Suffix Automaton ft Distinct Substring Queries in Range. | 1 2 | 3 | ||

299 | Suffix Tree | 1 | 3 | ||

300 | Palindromic Tree | 1 | 1 | code | 2 |

301 | Persistent Palindromic Tree | 1 | code | 3 | |

302 | Manachers Algorithm | 1 | 1 | code | 2 |

303 | Minimum Palindrome Factorization | 1 | 1 | code | 3 |

304 | Number of Palindromes in Range | 1 | 1 2 | code | 2 |

305 | Lyndon Factorization | 1 | 1 | 2 | |

306 | Main-Lorentz Algorithm | 1 | 3 | ||

307 | All Substring Longest Common Subsequence | 1 | code | 3 | |

308 | Bit LCS | 1 | code | 3 | |

309 | Cyclic LCS | code | 3 | ||

310 | De Bruijn Sequence | code | 1 | ||

311 | LCS on RLE compressed string | 1 | 3 |

## Category: DP

### Category: DP

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

312 | Digit DP | 1 | 1 | code | 1 |

313 | CHT | 1 2 | 1 | code | 2 |

314 | Dynamic CHT | 1 | 1 | code | 2 |

315 | Persistent CHT | code | 3 | ||

316 | Li Chao Tree | 1 2 | 1 2 | code | 2 |

317 | Persistent Li Chao Tree | 1 2 | code | 2 | |

318 | Extended Li Chao tree | 1 | 3 | ||

319 | Divide and Conquer Optimization | 1 | 1 | code | 1 |

320 | Knuth Optimization | 1 2 | 1 | code | 1 |

321 | Substring DP | 1 | 1 | code | 1 |

322 | Bounded Knapsack | 1 | 1 | code | 1 |

323 | SOS DP | 1 | 1 | code | 1 |

324 | Subset Sum Convolution | 1 | code | 2 | |

325 | Dynamic Submask Count | 1 | code | 2 | |

326 | DP over Divisors | code | 1 | ||

327 | Subset Sum in SQRT | 1 | code | 1 | |

328 | LIS Range Query | 1 | 1 | 2 | |

329 | Aliens Trick | 1 | 1 | 2 | |

330 | 1D1D DP Optimization | 1 | 1 | code | 3 |

331 | Connected Component DP | 1 | 1 | code | 3 |

332 | Slope Trick | 1 | 1 | 2 | |

333 | Subset Union of Bitsets | 1 | code | 2 | |

334 | Number of Subsequences Having Product at least K | 1 | code | 2 | |

335 | Hirschbergs Algorithm | 1 | 1 | 3 | |

336 | Broken Profile DP/plug dp | 1 2 | 1 | 2 | |

337 | XOR Equation | 1 | 1 2 3 | 2 | |

338 | "x2 +1 trick" | 1 | 1 | code | 1 |

339 | Open and Close Interval Trick | 1 | 1 | 1 | |

340 | Bitmask DP | 1 | 1 | 1 |

## Category: Geometry

### Category: Geometry

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

341 | Geometry 2D Everything | 1 2 3 4 | 1 | code | 3 |

342 | Basic Point Structure(2D) | 1 | code | 1 | |

343 | Polar Sort(2D) | 1 | code | 1 | |

344 | Basic Line Structure(2D) | 1 | code | 1 | |

345 | Angle Bisector(2D) | 1 | code | 1 | |

346 | Dist from Point to Line(2D) | 1 | code | 1 | |

347 | Dist from Point to Ray(2D) | 1 | code | 1 | |

348 | Dist from Point to Segment(2D) | 1 | code | 1 | |

349 | Dist from Segment to Segment(2D) | 1 | code | 1 | |

350 | Check if Point is on Segment(2D) | 1 | code | 1 | |

351 | Line Line Intersection(2D) | 1 | code | 1 | |

352 | Point Line Relation(2D) | 1 | code | 1 | |

353 | Project from Point to Line(2D) | 1 | code | 1 | |

354 | Project from Point to Segment(2D) | 1 | code | 1 | |

355 | Ray Ray Distance(2D) | 1 | code | 1 | |

356 | Ray Ray Intersection(2D) | 1 | code | 1 | |

357 | Reflection from Point to Line(2D) | 1 | code | 1 | |

358 | Segment Line Intersection(2D) | 1 | code | 1 | |

359 | Segment Line Relation(2D) | 1 | code | 1 | |

360 | Segment Segment Intersection(2D) | 1 | code | 1 | |

361 | Basic Circle Structure(2D) | 1 | code | 1 | |

362 | Circle Circle Area(2D) | 1 | code | 1 | |

363 | Circle Circle Intersection(2D) | 1 | code | 1 | |

364 | Circle Circle Relation(2D) | 1 | code | 1 | |

365 | Circle Line Intersection(2D) | 1 | code | 1 | |

366 | Circle Line Relation(2D) | 1 | code | 1 | |

367 | Circle Point Relation(2D) | 1 | code | 1 | |

368 | Tangent Lines from Point(2D) | 1 | code | 2 | |

369 | Tangent Lines from Circle(2D) | 1 | code | 2 | |

370 | Maximum Circle Cover(2D) | 1 | code | 2 | |

371 | Maximum Inscribed Circle(2D) | 1 | code | 2 | |

372 | Triangle Circle Intersection(2D) | 1 | code | 2 | |

373 | Polygon Circle Intersection(2D) | 1 | code | 2 | |

374 | Circle Union(2D) | 1 | code | 3 | |

375 | Centroid of a Polygon(2D) | 1 | code | 1 | |

376 | Convex Hull(2D) | 1 | code | 1 | |

377 | Diameter of a Convex Polygon(2D) | 1 | code | 2 | |

378 | Extreme Vertex(2D) | 1 | code | 2 | |

379 | Geometric Median(2D) | 1 | code | 2 | |

380 | Convexity Check(2D) | 1 | code | 1 | |

381 | Check if Point is in Convex(2D) | 1 | code | 2 | |

382 | Check if Point is in Polygon(2D) | 1 | code | 2 | |

383 | Minimum Enclosing Circle(2D) | 1 | code | 2 | |

384 | Minimum Enclosing Rectangle(2D) | 1 | code | 2 | |

385 | Polygon Line Intersection(2D) | 1 | code | 2 | |

386 | Width of a Polygon(2D) | 1 | code | 2 | |

387 | Winding Number(2D) | 1 | code | 2 | |

388 | Dist from Point to Polygon(2D) | 1 | code | 2 | |

389 | Dist from Polygon to Line(2D) | 1 | code | 2 | |

390 | Dist from Polygon to Polygon(2D) | 1 | code | 2 | |

391 | Maximum Dist from Polygon to Polygon(2D) | 1 | code | 3 | |

392 | Tangents from Point to Polygon(2D) | 1 | code | 3 | |

393 | Polygon Union(2D) | 1 | code | 3 | |

394 | Minkwoski Sum(2D) | 1 | code | 2 | |

395 | Geometry 3D Everything | 1 | code | 3 | |

396 | Basic Point Structure(3D) | 1 | code | 1 | |

397 | Basic Line Structure(3D) | 1 | code | 1 | |

398 | Plane Structure(3D) | 1 | code | 1 | |

399 | 3D Coordinates to 2D | 1 | code | 1 | |

400 | Distance from Segment to Point(3D) | 1 | 1 | code | 2 |

401 | Distance from Triangle to Point(3D) | 1 | 1 | code | 2 |

402 | Distance from Triangle to Segment(3D) | 1 | 1 | code | 2 |

403 | Distance from Triangle to Triangle(3D) | 1 | 1 | code | 2 |

404 | Distance from Segment to Segment(3D) | 1 | 2 | ||

405 | Plane Plane Intersection | 1 | code | 2 | |

406 | Basic Sphere Structure | 1 | code | 1 | |

407 | Sphere Line Intersection | 1 | code | 2 | |

408 | Segment Segment Intersection on Sphere | 1 | code | 2 | |

409 | Oriented Angle on Sphere | 1 | code | 2 | |

410 | Area on The Surface of The Sphere | 1 | code | 2 | |

411 | Winding Number 3D | 1 | code | 3 | |

412 | Convex Hull 3D | 1 | 1 | code | 3 |

413 | Picks Theorem | 1 2 | 1 | 1 | |

414 | Closest Pair of Points | 1 | 1 | code | 1 |

415 | All Pair Segment Intersection. | 1 | 1 | code | 3 |

416 | Dynamic Convex Hull | code | 3 | ||

417 | Delaunay Triangulation | 1 | 1 | code | 3 |

418 | Voronoi Diagram | 1 | 1 | code | 3 |

419 | Half Plane Intersection | 1 | 1 | code | 2 |

420 | Dynamic Half Plane Intersection | 1 | code | 3 | |

421 | Onion Decomposition | 1 | 1 | code | 3 |

422 | Point Location | 1 | 1 | code | 3 |

423 | Convex Hull Intersection using Minkowski | 2 | |||

424 | Generating Points without Collinear Triplets | 1 | 2 | ||

425 | Maximum Area of a Triangle from given Lengths | 1 | code | 3 | |

426 | Vertical decomposition | 1 | 1 | 3 |

## Category: Game Theory

### Category: Game Theory

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

427 | Grundy Number | 1 2 | 1 | ||

428 | Green Hackenbush on Trees and Graphs | 1 2 | code | 2 | |

429 | Blue Red HackenBush | 1 | 1 | code | 3 |

430 | Games on Arbitrary Graphs | 1 | 2 | ||

431 | Matching Game On A Graph | 1 | 1 | code | 2 |

432 | Nimber | 1 | 3 |

## Category: Miscelleneous

### Category: Miscelleneous

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

433 | Bigint | code | 2 | ||

434 | Two Pointers | 1 | 1 | ||

435 | Binary Search | 1 | 1 | ||

436 | Fraction Binary Search | 1 | code | 3 | |

437 | Ternary Search | 1 | code | 1 | |

438 | Parallel Binary Search | 1 | 1 | 2 | |

439 | Josephus Problem | 1 | code | 1 | |

440 | Permutation with no Arithmetic Progression | 1 | 1 | 1 | |

441 | Balanced Brackets | 1 | 1 | ||

442 | Knight Moves in Infinity Grid | code | 2 | ||

443 | Bishop Placement | 1 | 1 | ||

444 | Gray Code | 1 | 1 | code | 1 |

445 | MEX of all Subarrays | 1 | code | 3 | |

446 | Dates | code | 1 | ||

447 | Schreier–Sims Algorithm | 1 | 1 | code | 3 |

448 | Expression Parsing | 1 | code | 1 | |

449 | Randomized Algorithms | 1 | 2 | ||

450 | K-th Root of a Permutation | 1 | 1 | code | 3 |

451 | Matroid Intersection | 1 2 3 4 5 | 1 | code | 3 |

452 | SMAWK Algorithm | 1 | 3 | ||

453 | Lindstrom–Gessel–Viennot lemma | 1 | 1 | 3 |

## Category: Important Links

### Category: Important Links

Title | Resources |
---|---|

Useful blogs | 1 |

USACO Guide | 1 |

Helpful Extensions | 1 |

Stress Testing | 1 |

Problems That Will Make You Learn Something New | 1 |

## Category: Recently Added

### Category: Recently Added

# | Title | Resources | Problems | Template | Difficulty |
---|---|---|---|---|---|

454 | XOR Segment Tree | 1 | code | 3 |

#### Contribute

You can comment the topic names that you think are missing right now and I am pretty sure some links are broken, do point those out if you find some.

#### Conclusion

The whole purpose of this project is to help you with this astounding journey of you trying to be better, trying to achieve the best of what you can imagine. Hope that my efforts won’t go in vain. I am waiting to see you at the top of the building that you made by the bricks of your expectations. I am waiting to see you smile and to be happy. Don’t forget to enjoy the journey and have fun while riding the boat.