bothar's blog

By bothar, history, 4 years ago, In English

Hi all,

So I have been doing competitive programming for a few months now (4-5) and I mostly practice on Codeforces. My highest rating is around 1650 and I have given around 20 contests. (PS: this is not my only ID).

For the past 3-4 contests though, I feel that I have missed on crossing that 1700 mark due to some very silly mistakes or wasting time where I shouldn't have. For example, I got my D hacked in system testing in the most recent contest because I used Float to Long Long conversion for storing Log2 value.

I personally believe that my implementation and quickly implementing the solution is my biggest strength but I really lack on cracking down questions of traditional topics like DP, Graphs, etc.

What tips do you suggest to avoid these silly mistakes which cost me a better rank in contests? And what should be my path now and from where (and how) should I learn new stuff to cross the 1700 mark and then 1800 and hopefully become a Candidate Master in the future?

Thanks in Advance!

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

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

Practice until silly mistakes filled performances are enough to get you to CM, that's when you get to CM with potential of getting master in 2 contests.

Otherwise you're an expert with potential of getting CM in a couple of contests with high probability of going back to expert if you do any div1 round.

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

    What rating problems from CF problem set should I practice for that? I can solve 1900 problems under 1 hour with ~50% probability.

    For problems >=2000, I can't solve them under 1 hour at all, maybe I take 3 hours of constant struggle with wrong solutions or can't solve at all.

    Even with that, I am often too slow/stupid even on tricky 1700 problems sometimes.

    So basically I make stupid mistakes on easier problems and don't have good thinking skills/brain for harder problems, what problems exactly should I practice on? I am confused.

    • »
      »
      »
      4 years ago, # ^ |
      Rev. 2   Vote: I like it +21 Vote: I do not like it

      Same thought applies, practice until you can solve even harder problems so you can not solve them during contest but end up solving in contest problems that are hard for you right now. Something I do is say/think a sentence that some people don't like: "this problem is easy", even if it isn't, for most problems that seem at least approachable. Maybe that worked as a support for me to try stupidly difficult problems, idk.

      There's no magic formula. Practice, challenge yourself and you'll get better. Your current progress is actually quite good, don't expect big jumps in your usual perfomance within a short time (3 months is really short).

      Also, stupid mistakes always happen, but quite a few of them are avoidable with experience. But they'll always happen, for example, I remember a recent (maybe in the last 8 months?) div1F that I lost because I forgot to add 1 line to the code that I knew was needed and told myself after thinking of the solution/before coding "this thing is really important". Also remember losing solutions because < should be <= or stuff like that, shit happens.

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

i think solving 30 recent 1700 problems will help you to solve 1700 problems better, and so on. i mean i believe if you want to be purple you have to be able to solve 2000, 2100 problems in less than 2 hours. if you can, then you can AC 1900 problem in the contest and you will get high rating.

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

See my graph. I was stuck in the 1800s for many (relatively few for many people, but relatively many for me) contests, all due to stupid mistakes (like forgetting fast I/O and resubmitting a problem that would have originally passed), but I broke through.

Silly mistakes are going to happen. And there are a lot of possible ones, so there's not much you can do to prevent new ones from happening. But the crucial part of mistakes is learning from them, and you should only consider mistakes an issue when you repeat them many times. A good way to weed out potential mistakes is, of course, practicing — just doing problems, or simulating a contest environment virtually to maybe find more mistakes you would have made.