USACO: Closing the Gap Between Expectations with Reality

Here’s the full video where I discuss the same content in detail: USACO: Closing the Gap Between Expectations and Reality

The other day, I stumbled across a quote that really resonated with me:

“Don’t practice until you get something right, practice until you can’t get it wrong.”

I vividly remember my time in the Gold division when I was first learning dynamic programming (DP for short). Having solved a handful of practice problems from previous contests, I felt confident about my ability to solve DP problems in upcoming competitions. However, when the first contest arrived, I couldn’t solve a single problem. I still remember how devastated and demotivated I felt as I scrolled through the contest results, knowing that I failed to even come close to my expectations. Fortunately, months later, as I practiced more and more DP, I gradually began to solve more and more DP problems in contest until I promoted to the Platinum division. 

Reflecting on this experience, I realized that the issue wasn’t necessarily that I couldn’t solve the problems during contest; rather it was the disparity between my expectations and results. In hindsight, I had only managed to solve a couple easy practice problems, so why should I have expected to solve the more challenging problems in newer contests? It may seem foolish that I had set such lofty expectations, but I’ve seen many competitors struggling with this exact issue across every division and topic, whether it’s silver competitors overestimating their success with DFS problems or Gold competitors grappling with dynamic programming.

So, how can you bridge this gap between expectation and reality? Returning to the quote, instead of practicing until you get a few problems right, you should be practicing problems to the extent that you can’t get them wrong. While success can never be guaranteed, there's a level of proficiency you can attain where success becomes highly probable—most campers can solve any Gold DP problem, and most Platinum and Gold competitors can handle any problem in Bronze. The question then becomes: How can we determine the threshold we need to reach to confidently expect success in contests? Let’s draw a diagram, where let’s assume you’ve solved 50% of Gold DP problems in order by difficulty (this could apply to any topic or division):

At this stage, you can solve half of the problems, but you won't be able to solve any in a contest since the difficulty you can handle doesn't encompass the contest difficulty. This brings us back to the issue of expectations versus reality. Even if you've managed to solve half or a significant majority of practice problems, it’s unwise to anticipate solving the DP problem during contests. If you truly want to anticipate success, you need to practice until you reach this point:

By setting realistic expectations based on how much you’ve practiced, you’ll avoid disappointment from contest results. Naturally, the Gold division isn't solely comprised of DP problems, so to anticipate success, ensure that you thoroughly cover all the other common categories like Dijkstra's algorithm and Segment Trees. Again, this can be applied to any division and topic.

I hope you end up finding some of this advice helpful—it’s something that a lot of my students and I have learned throughout our experiences.