harrypotter0's blog

By harrypotter0, history, 8 years ago, In English

First do a self analysis (truthful) — don’t assume you are the best or the worst.

List the areas to improve,

Language skills — C++/Java Math skills Data structures — including the tough ones Trees, Graphs etc. Algorithms (not just simple sorting, but advanced ones that’s required for competitive programming). Once you have a fair idea, then start work — be humble enough to admit you do not have the skills of Anudeep Nekkanti or Ashish Kedia at the beginning.

Keep a small goal to solve enough Div-II 250 problems without peaking into solutions, then 500 pointers, and then 1000 pointer in Div-II. During this process, you can learn and improve your skills in implementation, solving and speed.

The process will be slow and may take up to 2–3 years, be patient and measure growth in each step. As you slowly climb the steps, your confidence will improve and one day can be among the top programmers. The most important point is to not loose patience, and when you do take a break and come back stronger.

Some things you could do are read/ view/study the following,

Mathematics for Computer science (MIT OCW) Stanford — Algorithms I & II — Coursera — Free Online Courses From Top Universities | Coursera Introduction to Algorithms — CLRS Concrete Mathematics by Graham, Knuth & Patashnik. This should be more than sufficient to start with and reach a level above average programmers. Be patient while reading these books, as they are little difficult to understand and learn. Try reading multiple times — if you did not understand the content.

In short : practice make perfectness.

You should try to practice the competitive problems which are beyond your ability or knowledge but no more than a lot beyond your ability. For OJ, I recommend HackerRank or Topcoder since on these site, you can review other programmer's code or solution. Find some descent algorithm books to learn(CLRS for example), but do not only read the book, keep practice during the process. You can find problems of the topic you're reading to practice. On hackerrank, this is easy, since they already classify the problem by topics. Learn math, especially discrete mathematics. I recommend the book "Concrete mathematics" Solve, review, solve review, repeat this process Prepare your coding library from the start, try to review your library once in a while Find some persons with the same passion as you to form a team, go along the way together since ACM-ICPC is a team contests. And encourage each other. Finally, and most important one: Have fun, avoid over training. If you find it is tired to train, drop it, play with friends, find a girlfriend, do some other things. And then returned with passion and energy again.

You can read the story of the most successful topcoder Petr(The Story of Petr Mitrichev — Target in Six Steps) to find some keys to success in competitive programming.

  • Vote: I like it
  • 0
  • Vote: I do not like it

| Write comment?
»
8 years ago, # |
  Vote: I like it +20 Vote: I do not like it

Your full post is copied from here: https://www.quora.com/How-do-I-learn-competitive-programming-as-a-beginner#!n=24

You should include the source of your 'copied text'. But you didn't do it. Instead of copying it, you might share the link. It is a bad practice.