I have joined code chef two months ago, and have taken part in this month’s two contests so far, I was only able to solve two questions in each contest, which topics or concepts should be mastered so that I will be able to solve more??

If i go on listing every concept, it would be a huge list. You can already see the thread “Data Structures and Algorithms” for that.

The thing is, its better to improve via practice of contest Q. Look up at the Q you were unable to solve. What are their pre-requsites? If you dont know them, time to learn them, else give that Q another try again and again till you get AC!

The Q i am often getting asked these days is “There is so much to learn that I the universe would end before i could finish even half the algorithms. What to do then?”

Contests usually ask Q from all important/relelvant algorithms. Common tricks like Square root decomposition, dp, Segment tree etc. are frequently asked.

But yes, get a hold on few things like Arrays, Strings, Recursion, Basic dp, Data Structures like vector, set, priority queue, Trees & Graph theory.

Couple days back I found this link, And I found it’s very interesting and covering wide range of topics… Although It did not cover FFT related problems but I think this should be quite helpful…

alright, I think I now know what to do next, thanks!

thanks a lot!

Hey buddy,

To excel in competitive programming, you must follow this list (my point of view.)

- Maths - Basic Combinatorial
- Get acquainted with the language - let’s suppose you are familiar with C only, then start learning C++ and standard template library.
- Time Complexity.
- Bit-Manipulation - Properties of and, or ,XOR , not gates.
- Basic Data structure- linked list, queue, stack, Binary Search and other basic.
- Segment tree & DP
- Basic Trees/Graphs Algorithms
- Harder level algorithms with an intuitive approach.

You can assume this list as a long challenge because if you know maths you can solve the 1st question, the 2nd question can be solved using how you are familiar with the language and maths and other basic kinds of stuff.

for a question of the higher level, you must know the previous levels, so 3-4 questions are generally related to reducing time complexity and the 5-6 question can be solved if you are good at trees and graphs similarly for 7-8 question you must other things like DP and Algo pretty well to optimize them and get a solution out of them. For last two problems to solve you must need to do a lot of practice.

At last, to conclude, I would suggest you to stick to competitive programming and do a lot of practice.Remember practice makes a man perfect.

Hope this helps!

you can also see this answer on how to become good at problem-solving.