Tutorials  Articles  Notifications  Login  Signup


Rajan Kumar

Founder at HackersFriend Updated Dec. 6, 2019, 6:48 p.m. ⋅ 862 views

Algorithms and Maths you need to know for hard level competitive programming problems

Several programmers solve a lot of problems of easy level and medium level but they fail to solve hard level problems. Reason is, Hard level problems in competitive programming requires a deep understanding of mathematics and algorithms. Here are a topics you need to know to solve Hard level competitive programming problems.

  • Data structures: Maps, Segment tree, Fenwick tree, Heaps,
  • Dynamic programing: Many of the problems involving DP have a similar structure, learn several of them.
  • Graph algorithms: BFS, DFS, Minimum Spanning tree, Single-source and all-pairs shortest paths, Topological ordering, Maximum flow, Maximum bipartite matching, Min-cost max flow, just to mention a few.
  • Geometry: Need to know the concepts and the algorithms. We didn’t know the algorithms by heart (they are very error prone) so we had them in our notes.
  • Number theory and combinatorics.
  • Asymptotic notation: to be able to determine the complexity of your algorithm.
  • String algorithms: KMP for string matching, use of prefix trees, Longest common/increasing subsequence, etc.
  • Backtracking 

I think that Steven Halim’s competitive programming book is a good place to learn all these concepts. Addintional to this, CLRS and Concerete mathematics are the books you should read.


HackerFriend Logo

Join the community of 1 Lakh+ Developers

Create a free account and get access to tutorials, jobs, hackathons, developer events and neatly written articles.

Create a free account