Addy's blog

By Addy, history, 8 years ago, In English

"Where do I start?" "How do I get better?"

Stuck here?

Don't worry, here is a guide that will help you answer these questions .

"Where do I start?"

Step 0: Prerequisites: Determination / Dedication.

Step 1: Choosing your language. Which: The language should be preferably C++ or Java, the last preference should be Python (due to its unavailability on many official coding platforms, e.g., the ACM ICPC).

We will focus on C++, Java is slow, but more importantly lacks shorthand generic implementations of standard templates (one big advantage of Java is Big Integers, which we will see later)

Why: Java, C++, Python have libraries that would cut the time to write the code, as well as increase the efficiency most of the times. Example: sort(a,a+n); //in C++ would sort the array of n elements in O(nlogn) time. It is both simpler to implement and more efficient than the O(n^2) sorts.

If you know C, it is very easy to switch to C++. With almost no effort, you can use very powerful libraries.

Step 2: Learn the Language? I would recommend practicing problems, as many as you can, you'll be able to learn stuff as the need arises.

Step 3: Where? What if I'm stuck? Too much stuff all around and I'm freaking out. :O :( Google is a source that you would rely on most of the time. But if you didn’t understand something on google or you want to discuss a topic with someone or clear doubts, you are always free to ping someone Someone will definitely reply.

Step 4: Okay, I'm ready, tell me where to start. https://www.hackerrank.com/ https://www.hackerearth.com/practice/codemonk/

Doing till the "Sorting" part is recommended before you try an Online judge like Codeforces.

Then switch over to a better Online Competitive Platform http://mirror.codeforces.com/

It is a platform where regular contests are held and everyone has ratings.

Here is a link for all the problems, sorted by submission. Usually, greater the number of problem submissions, easier is the problem. http://mirror.codeforces.com/problemset?order=BY_SOLVED_DESC

Try finishing the first 3-4 pages of this^ to get a hang of competitive coding.

Start from square 1, build up your confidence, start from the most solved, and keep going. Generally, 'A' problems would be the easiest, followed by B, C, and D .

P.S. Remember, you're in Div2. Look for the Division, Div1 As are equivalent to Div2 C’s. you might end up doing a very difficult A problem :P

As a newbie, you should never care about rating because that is your biggest barrier in trying harder and trying problems out of your comfort zone during a competition. Even if your rating is going down, it doesn't mean you aren't improving; rating is relative to others and isn't a sole factor of what you can do.

The key is: "PRACTICE, PRACTICE, PRACTICE."

Don't stop even if you get stuck. Get help immediately. Do one or more of the following:

Try to find other people's solutions or read the editorial. Get the main idea of the solution. Now CLOSE the solution and implement yours without reading the solution again. This is quite important so that the algorithm/solution will sink into your head.

Participate in contests. There is no better practice than actual contests. Contests help with your ability to contain your stress and will test your strengths to the maximum. After each contest, make sure to solve all the questions that you did not solve during the contest. This is a key point.

Let me define “Stuck” for you. Stuck is a state when you have completely tried your level best, all ideas you have had have failed, and you can't think of more.

Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, :)

Rating would automatically improve as you improve.

Once you're comfortable with A and B level problems, try pushing for C, then push for D. Don't stop. Push harder, you'll definitely be good someday.

Add your friends/seniors and try to compete; try setting benchmarks and work hard. And most importantly:

Step 5: GLHF. Have fun. You really can't be good at something if you don't like it. So have fun! Good luck!

  • Vote: I like it
  • +33
  • Vote: I do not like it

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

Thanks a lot, we deserved a post like this

»
8 years ago, # |
  Vote: I like it +1 Vote: I do not like it

That was really helpful for a beginner like me... Thanks a lot :)

»
8 years ago, # |
  Vote: I like it +4 Vote: I do not like it

One of the great posts I've read !

»
8 years ago, # |
  Vote: I like it +4 Vote: I do not like it

Inspiring!!

  • »
    »
    8 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Hahaha. Thanks! :D Long way to go!

»
8 years ago, # |
  Vote: I like it -6 Vote: I do not like it
»
8 years ago, # |
  Vote: I like it +5 Vote: I do not like it

Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, :)

I think this is very well said. This blog post contains some great advice :)

»
6 years ago, # |
  Vote: I like it +6 Vote: I do not like it

Great post!

Don't stop even if you get stuck. Get help immediately.

I would suggest that if you are stuck at a problem, just leave it for the time being and come back to it later. Sometimes, solutions do not strike in one go but that does not mean that one can't solve the problem at all. So just give a few tries (maybe 3). If you still can't solve the problem, only then proceed to see the tutorial or other people's solution.

»
6 years ago, # |
  Vote: I like it +15 Vote: I do not like it

One day, my color shall change :)

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

how do I know if a problem belongs to Div 1 or Div 2?

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +2 Vote: I do not like it

    On the right side of your problem page, it shows the contest which the problem is in.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

As a newbie, you should never care about rating because that is your biggest barrier in trying harder and trying problems out of your comfort zone during a competition. Even if your rating is going down, it doesn't mean you aren't improving; rating is relative to others and isn't a sole factor of what you can do. Exactly what i needs, I'm caring much about my rating although it isn't worth.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I don't get it. Why would you not try harder problems if you care about your rating? It's not like if you get WA on a harder problem, the score goes down or something on the other already ACed problems :/

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      When i care much about rating during live contests, i don't feel comfortable and don't perform well. So, for me, when i don't care something, it's usually better.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it +9 Vote: I do not like it

        I see, it's just personal preference then maybe. I personally perform better when I do care about my rating.

»
5 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

In my opinion, http://cp-algorithms.com/ (english version of http://e-maxx.ru/) is the best place to find explanations and implementations for algorithms in C++. In addition, one of the best resources is the problem list on the bottom of almost every algorithms page; I find that if I solve most problems on that list for a given algorithm I become much better at that algorithm. My favorite page is the segment tree page. Through its explanations I gained important intuition on how to code non-standard segment trees which has helped me a lot on contests.

»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Addy Bhaiya Gawd

»
4 years ago, # |
  Vote: I like it +1 Vote: I do not like it

I just wish to become Pupil TAT