vamaddur's blog

By vamaddur, history, 21 month(s) ago, In English,

For the past 3 years that I have been doing programming contests, I've noticed the trend that I very rarely solve problems in the last 1/6 to 1/5 of the given time in any competition (e.g. last 20 minutes of a CF round or last hour of an ACM event).

Sometimes this lack of efficacy is due to not knowing a niche technique, or running into a genuinely hard problem. However, more often than not, I open the editorial and groan at not seeing a solution that I was millimeters away from on pen and paper. I have never went into the home stretch thinking I would not solve anything (so I don't believe its my mental at fault), but I would like to figure out if there is a way in addition to straight up practice that more experienced coders use to make the most of every minute of competition.

Hopefully those people can share their insights for both myself and the CF community. :)

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

»
4 weeks ago, # |
  Vote: I like it +3 Vote: I do not like it

If the problem is not in the mindset, then it must be in the skill, right?

You've only done 2 contests this year. Maybe not solving anything in the very end is just coincidence. It's also more likely to happen if you are a speedforces person, since you will have more time to think and are more likely to solve problems that you have the knowledge to solve (as in, you are less likely to solve problems at the very end because you will have solved them in the beginning, and if you can't solve a problem at all then it's unlikely you'll get it in contest).

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

    I've done a fair number of VCs on CF this year, but I'll concede the point that I have not done too many contests in real time. However, this was also based on my observations on a lot of HS ACM-style contests outside of CF and other online sites.

»
4 weeks ago, # |
  Vote: I like it +59 Vote: I do not like it

I dont practise that much, but I do get involved and focused when I do practises. I think a very important skill is to relate problems with previous solving experience, as usually similar problems have similar solutions. Another important skill is constructive ability, which also relates to pattern finding ability and ability to create counter examples. These are very important in observation/ad-hoc tasks, and it might be a good way to practise these in Atcoder. Also, when approaching hard problems, it is important not to get stuck on ideas. You have to be constantly aware of not sticking to the same approach and limiting your thoughts, because if you cant find the solution for long time, its most likely your approach is not in the correct way. I think the above stuff are the most important elements that made me improve quickly.

By the way, our song released around one month ago is almost hitting 100M views on youtube, please support! https://www.youtube.com/watch?v=kOHB85vDuow

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

    Nice points. I think those might be what I'm lacking.

  • »
    »
    4 weeks ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    even though i am not a cp guy , but i did lots of math competions and i think you wrong , there was lots of cases when i choosed right approach but because of some tupid lemma or some stupid simple fact , i wasnt procced further , i can count so many problems from china tst or usa tst which show this cases , “A problem worthy of attack, proves its worth by fighting back!” – Paul Erdos

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

There have been instances where I've solved in last 1 minute, but this comment for the 2nd paragraph of your blog.

My target is Div 2 D nowadays. However, its still rare for me to solve Div2 D in contest. After contest I realize I am 'millimetres' away from solving D. This has become a very common occurrence and hence I'm stuck in low blue.

»
4 weeks ago, # |
  Vote: I like it +54 Vote: I do not like it

I think this is quite normal that this happens. Assuming you do the problems in the order of increasing difficulty, the time to solve the next one increases.

For example, in the last contest the time it took you (assuming you started next one immediately after previous one) for subsequent problems was: 4, 8, 15, 20 minutes. Then you kept trying problem E and submits started after additional 33 minutes. I don't know if you had a bug or just kept trying a wrong solution. But assuming you would solve this problem, the next one should take you at least 40 minutes and you didn't have that much time until the end of contest even at the moment of your first submit to E.

So my point is, that at the end of the contest the next problem to solve takes long (no matter if it's just debugging or no good ideas). I estimate at least 30 minutes for such a problem, or maybe even 60 minutes if it doesn't suit you. There is a huge chance that the last 20 minutes is in the middle of the time required for the last problem. Moreover, if you have 30 minutes to solve a problem that requires 40 minutes from you, this will surely feel like you were very close after reading the editorial.

The only tip here is to actually work as long as the contest runs instead of giving up "because there is not enough time".

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

    in the cp , almost every contest i see problems ordered based on diffculty , but in math competions , there was cases they changed orders , and the result was score drop by a lot , so this shows how important it is to solve right problem in the right time , but why there is not any such mind trick in cp ?

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

      For you, CP = contests in codeforces?

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

      In CF, the harder problems are worth more. That's how the format is chosen — to award solving harder problems. You can't hide the difficulty by reordering problems if you choose such format, so why not have the problems sorted.

      When the scores for problems are equal, I suppose ordering is most helpful for the contestant in contests where time matters a lot.

      In majority of the math competitions I took part or heard of, it doesn't matter if you solve the problem in the first 10 minutes or the last 10 minutes. It just counts as a solved problem. You have more than enough time to read the statements and judge which is suitable for you.

      In a lot of programming competitions, you get penalty for submitting later. Usually, the easiest problems are possible to solve in less time than it takes to read all the statements. This would give advantage to a random set of people who choose to read the easy ones first. This happens on ACM-style contests, but the time doesn't matter enough to make it a deciding factor in most of the cases.

      On IOI-style contests, the time doesn't matter and tasks are not ordered.

      but why there is not any such mind trick in cp ?

      So, answering this question: sometimes the negatives of this idea (penalty for random people) are bigger than the positives (making the contest more interesting). But when the negatives are mild, the problems are shuffled also in CP.