deepsterescu's blog

By deepsterescu, history, 8 years ago, In English

Hi,

Browsing through the problem set I found myself struggling to understand how people can get solutions up and running in such a short time whilst I'm here only able to solve A, B and sometimes C.

Seeing the fact that the hardest problems on Div2 usually require some advanced data structures that I've never heard of makes me question how people that were in my position managed to overcome this moment.

I was wondering if you could share any tips and tricks you used to skyrocket your rating and get past the Div2 hell.

What are some key steps that you tend to follow in the problem-solving process and also how did you manage to maintain your Div1 status after you made the step up?

I'm looking forward to hearing your stories on your competitive programming path from Div2 to Div1.

Happy coding! :D

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

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

Solve problems. Study. Solve problems.

Then, challenge yourself with harder problems.

»
8 years ago, # |
Rev. 2   Vote: I like it +47 Vote: I do not like it

For starters, while tfg's answer may seem bland and not very helpful, it's the only true answer anyone can give you. There isn't any way of improving your rating quickly, aside from lucky contests, which may give you rating that you will statistically lose in a couple more contests. The only way to improve is to study hard, and keep an eye out for anything new. Start solving problems like Div 2. A, B, C. Try to spend at least 30 minutes on any problem you don't understand before checking the solution. Being new, it shouldn't take long until you run into something you can't solve — which is brilliant! Be happy that you have found a new way to challenge yourself. Read the solution patiently and work hard to understand it. If there are any data structures involved, look them up on the internet, learn how they work and, most importantly, understand how they work — this guarantees that you will be able to come up with a solution even if some things are slightly different. Each time, there will be one fewer thing you don't know and one more thing you can count on solving in a contest, and remember — a job well done is worth more than ten jobs partly done, especially in programming. Use Codeforces' virtual contests to time yourself, but don't spend too long solving problems you are confident about — instead always be on the lookout for problems you can't yet solve, because they will always be there. Perhaps the most important advice I can give you is to take your time and enjoy yourself, since learning is beautiful and the process is very long. I've been active on this platform for little over a year, but have been studying Computer Science for about two more before that. Yet, I'm still only a Candidate Master with much to learn before I can become Master. But, perhaps you will be able to learn faster that I have — just try! And try to remember that rating follows skill, not the other way around ;)

Some resources for you:

  • E-Maxx (Russian — Encyclopedia of thechniques)
  • Infoarena (Since you're Romanian, I assume you already use it)
  • Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein — the Bible of CS.

Good luck, and as a final analogy: Training to be a good competitive programmer is kind of like going to the gym to become a bodybuilder, except you build your brain instead of body. It's difficult, it takes a long time to see results but in the end it's worth it and you'll feel proud about yourself.

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

    How often do you read the submitted answer solution? I wonder if it's a good way to learning. Instead of keep trying to figure it out by yourself.

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

      In my experience, it works in thr short term (perhaps slightly longer if you read and implement it carefully) but after some months they might slip out of your mind. The best way to remember is to try to figure it out yourself, even if you cant you will remember the solution better. If you cant help it, try to only read parts of the solution and figure the rest out by yourself.

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

        So did you start learning from books or just solved problems and checked on editorials now and then?

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

          I actually started learning in high school CS classes, by solving easy problems on Infoarena under the tutelage of my teacher. I liked it, and started solving problems from the Romanian Olympiad in increasing order of difficulty. I've also had other people help me from time to time. But I'd say the optimum way is just to mix learning from books, editorials and solving problems yourself.

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

I can help with Div1 -> Div2 path, send me PM if you are interested.