For many of the good problems some CS concepts poses as prerequisites.I find them very interesting and will do it.However , should I understand and try out problems with gradually increasing difficulty or just give your best to the problem in question ,try to write a solution and devour the editorial or the required concepts ???

I think the latter would help us compare our approach to what the actual solution’s approach helping a lot .

What are the most common algorithms ,data structures concepts and mathematics required to tackle the problems???

@devchef According to me first you should learn about how to calculate complexity of any algorithm.

then you should see tutorials on topcoder tutorials and codechef tutorials.

The basic concepts can be:

- Dynamic Programming
- Greedy algortithms
- Graph Problems
- Combinatorics
- Integer Programming
- String handling
- Trees

I think studying about these topics and practicing them would help a lot

Furthermore increasing proficiency in data structures and sorting and searching algorithms would give a head start.

Newbies should start with easy then move to medium then to hard .

From easy problems u can see what are the prerequisites of coding.

From medium level problems u will have to use the some basic data structures and graphs and mathematical concepts

Then move on too the hard questions .

in between even try some challenge questions from codechef or from other places.

Start by implementing your own concept if u dont get it still finally see editorials and answers take help and then do again.

The most common Algo and concepts include BFS,DFS, TSP, inputting large numbers

in maths u should be able to just frame equations and know basic mathematical concepts like permutation and combination ,simultaneous equations etc.

try to learn more about data structures and some basic traversal techniques.