Getting started with Competitive Programming

Competitive Programming


All about Maths


as you are here it means you wanted to learn, how to solve mathematical problems that can't be solved using a calculator, you have to be sure about the fact that you are going to be dealing with Maths a lot so try to brush up your concept on Maths, especially -

  1. Number theory

  2. Geometry

  3. Combinatorics

  4. Permutations

Programming language

  Now as you are ready to go with your math skill, now you need a programming language to narrate your ideas to the computing unit at the server, so master a programming language.

that's it you are ready to go with your math skill, now you need a programming language to narrate your ideas to the computing unit at the server, so master a programming language.
choose any ?programming language but it is good to go with any of these
  1. C/C++ with STL

  2. Java with Java.util Library

  3. Python

Choose a platform

now you have to choose a platform for practice, there are a lot of them but these are best for beginners -
  1. Codechef

  2. Hackerrank
  3. Hackerearth
Note- it is good to do all problems from the same platform as doing most simple problems from all platform will not help you at all.
Once you have done some problems (more than 50 on any) you can jump to some advance platforms like-
  1. Codeforces
  2. Topcoder
Note- Do not do all easy question once you have done 10-15 question from a level try to jump to next level if you do not feel comfortable in that level come back and try some more problem.

Moving forward

you definitely struggle with tougher problems which do not need only?intuition, they need either better algorithms or better data structures and you will never be able to do them without using these(unless you are a prodigy).
so moving forward you have to learn data structures like these-
  1. Stack ?( already in C++ STL and Java.util)
  2. Queue (?already in C++ STL and Java.util)
  3. Linked List (?already in C++ STL and Java.util)
  4. Trees (already in C++ STL and Java.util)
  5. Graph (not in C++ STL)
There also some Advance Data Structures you need to learn like
  1. Segment Tree
  2. Self Balancing Tree (like AVL, Red Black )
  3. Suffix Tree
  4. fenwick tree

Keep learning

I know it is a lot to take in at first, but learning problem solving is a continuous process, most of the people who ranked in leaderboard at any site have been programming for many years(more than 5 at least),
so do not give up if you find some problem which has been solved by others and you not able to get a solution for it...
#happycoding

Comments