Codeforces and Polygon may be unavailable from December 6, 19:00 (UTC) to December 6, 21:00 (UTC) due to technical maintenance. ×

Tahboub's blog

By Tahboub, history, 3 years ago, In English

I've seen several newbie accounts on Codeforces that have apparently over a thousand problems (some even over two thousand) yet don't seem to break the newbie barrier. I would expect such users to at least be very consistent at solving div. 2 A and B problems, but even that is not the case. So, my question is why do some people who solve very many problems not eventually improve? Is it a matter of talent? Not learning the right algorithms? A combination of multiple factors?

The intuitive answer to me is that they aren't challenging themselves with the problems they solve, but that doesn't explain why they don't become very good at solving easy problems. Indeed, some do become consistent at solving A problems, but I see many who don't often solve B problems, or at least not at the speed one would expect.

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

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

I think a big part of it is just solving a bit outside of your comfort zone. If you solve lots of A problems, you might get good at solving A problems, but not much at harder problems.

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

Can't truly say because I've never been to grind-out-of-newbie hell, but there are certain reasons which might make some people stop improving even with considerable amounts of problem-solving. Sometimes people solve problems not to improve, but because they are either entertaining, or help exercising/maintain DSA knowledge. The latter might be useful to a lot of people, especially those most likely to fall into gray (university students using Codeforces as a training ground for interviews, not hardened competitors of national OIs/ICPC). For example, I have solved loads of problems after retiring (I think 500-600), but my skills have been declining ever since. Also, taking into account that skills decrease over time with lack of usage, solving ~1000 easy problems (should take 250-300h or something of sorts?) over the span of 3-4 years won't really allow you to truly improve when you are constantly suffering from atrophy. Self-deception is also a factor at play, and it goes beyond pretending to solve problems. I knew somebody who, after having been told that solving 3-4 1300-1400 problems a day would bring them to specialist, copy-paste 3-4 solutions a day for 3 months (they of course never made it beyond grey FYI). Lastly, A — C div 2 involves primarily mathematical intuition. This is not something everybody have — granted, the mathematical intuition required for these problems are very basic and you need some math skills to get into high school/university anyways, but I've meet 8th graders struggling to add fractions, so that's not truly surprising.

  • »
    »
    3 years ago, # ^ |
    Rev. 3   Vote: I like it -11 Vote: I do not like it

    Would you say solving 3-4 1300-1400 problems a day is really enough to reach specialist?

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

      ...I'm not sure, but I think yes, but depends on how much time you spent doing that? The thing is that while I stabilized above pupil very quickly, I also trained very hard at the time (newcomer hype and all of that). You may need to solve 3-4 1300-1400 problems a day for several months though. Also, somewhat decent mathematical background certainly helped.

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

      It sounds excessive to me. Just one or two per day is plenty imho.

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

    Lol, some of my classmates struggle with fractions and I am in last year of high school (13th grade).

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

There is actually a good post about it: this one

»
3 years ago, # |
  Vote: I like it -10 Vote: I do not like it

If we're talking about grays, the self-deception post is a miss. Seriously, which is more likely, a gray who is trying to game their way up the rating ladder by 'sElF-dEcEpTiOn' or just... it's a fucking gray who doesn't even know what the ladder looks like, so they're burning out their good faith efforts over the only advice they consistently hear: rating+x, repeat more if it fails, repeat even more if it works!

Off a cliff thousands of times over... tl;dr is it that much of a leap to imagine dopamine mining behavior (spamming ez problems) as a function of well-earned despair?

Part of it is the goldfish memory encouraged by the single-stream recent actions firehose. That exacerbates the exhaustion that a mythical well-meaning strong competitor might feel... so they inevitably cut off and repeat the lowest-common-denominator spam advice to make askers go away.

The faq/catalog is a late step the right direction in that regard (even if it includes the shitty self-deception post) but doesn't (yet?) solve the main issue: a website that makes good info hard to find (but at least it's recorded at all, somewhere).

In an effort to be constructive: I think if the advice-givers keep it simple, "this is what worked for me over time x, no guarantees for current day, and/or our backgrounds might be too different, I don't know you nor do I want to" that's fine and less tiring. But if they get too picky about helping, the spam/sham advice will win every time.

Like, even the post I just complained about has that much sooooomewwhhherrre inside, even if I personally regard the references to usaco/train as kinda sad, I can respect that it was genuinely useful to the people citing it. Going further, editorials are fine to a gray who doesn't even know what the ladder looks like, but at some future point, it will be preferable to honestly test what you can do as you practice rather than waiting for a new contest to enforce that discipline for you. See? Far fewer words, far less moralizing, and it'll still get flushed with every other useful bit of advice into the same toilet and we'll all have to do it again if we aim to stay ahead of the flow of spam advice...

We can own the fact that codeforces on its own is of limited educational value below a certain level of skill. We can own the fact that its focus is on 'interesting' so any educational effects are probably more incidental than intentional. My most concrete advice is to limit your time with cp (not just cf) to some percentage (say, 3%) of your overall output. Seriously, go code something useful/fun and solve problems in a context where you actually care about the result (even better if the result is tangible/visible/audible). Keep that feeling in mind for contrast when you come back to cp and honestly evaluate what you're getting from this type of competition (and/or how you can contribute).

Also don't waste time posting on this pile of blogs stacked in a trench coat acting like a forum... this was my practice time for the day, OH well.

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

    Although I agree that there are many pieces of advice that feel too generic (like the well-known "practise more"), I don't think you can (really) blame the high-rated people who say this: "practising more"/"solve problems of rating+x" probably actually works for them and, equally important, it seems that many low-rated users have some wrong expectations from their practice ("sir i solved 20 questions, why i am still newbie???") or, perhaps, CP in general. These users are often impatient, post blogs and/or probably privately ask higher-rated users lazy (and kind of rudely expressed) questions like "sir why my code give me wa on test 2, please help asap" and think that grandmasters have unlimited free time at their disposal to help random users on Codeforces.

    They also seem to get more exposure than hard-working people, because they are much more likely to post a blog with a question than those who try to figure out the problem on their own. When many blogs are just lazy questions, for many it isn't worth it to write a detailed answer and I think there is also a slight lazy newbie stereotype because of these blogs.

    Additionally, probably some high-rated users don't really understand that problems like div2B/div2C are difficult for newbies and subconsciously attribute their struggles to their laziness. I said "probably some high-rated users", it's definitely not many or all.

    As a slightly high-rated user, the only advice I'd give is: quality > quantity. Otherwise, everyone is different and should figure out the answers to their questions on their own; "questions" also include the real reason for doing CP. Reading blogs like "Self-deception" simply expands your perspective and gives you some things to think about; it is delusional to consider them universally applicable and useful advice.

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

Does the number of solved problems really that matter? I can solve every < 1000 problems right now, but it won't profit me anything.

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

    No. It is more about the quality of the problems than the quantity of the problems. You would be better off solving 1 2000 problem, than 20 1000 problems. (Numbers are made up arbitrarily)