0% found this document useful (0 votes)
24 views3 pages

Competitive Programming Practice Guide

The document provides advice for effective competitive programming practice. It warns against superficial practice and emphasizes practicing to learn rather than just solving problems. Spending significant time immersed in challenging problems is important for developing creative problem-solving skills. Motivation comes from a genuine interest in problems, not external factors, and self-deception is a major hindrance to improvement. The goal should be learning, not just the number of problems solved.

Uploaded by

balexa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views3 pages

Competitive Programming Practice Guide

The document provides advice for effective competitive programming practice. It warns against superficial practice and emphasizes practicing to learn rather than just solving problems. Spending significant time immersed in challenging problems is important for developing creative problem-solving skills. Motivation comes from a genuine interest in problems, not external factors, and self-deception is a major hindrance to improvement. The goal should be learning, not just the number of problems solved.

Uploaded by

balexa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Competitive Programming Roadmap

Warning

No RoadMap is going to work for you until you practice individual


problems correctly. Don't practice just for marking of problems as
solved instead of really learning from them. Things like daily routine
forces you to hit a certain mark everyday instead of practicing to
learn.

Remember

You aren't practicing to solve a problem or to prove that you are


capable of solving a problem but to learn how to solve a problem.

Spending a small amount of time on a problem means you will get very
little out of it. You need to immerse yourself in solving harder problems,
that's where real creative thoughts happen. When you try all the obvious
stuff and you don't have any immediate option available for the problem,
you actually have to take time to train your brain to think of new ideas.
The immersion and deep thoughts are the main way that you really
improve practice to maximize that.

How much time to spend on a problem


You can only think of solutions when you have a good past experience of
efficient ways to solve such problems. For that you need to Unlock Your
Intuition by practicing problems and understanding the solutions posted
by others. Quality of insights and intuition gained from a problem is
always important than Quantity of questions practiced.

You really have to have CP in your mind. After solving a problem, it


doesn't mean that it's gone and you have to forget about it. Maybe
you'll find yourself thinking about some interesting aspects of some
task and you'll invent a harder one?

If you can't solve a problem which is really interesting/important for you,


you'll try for a few days — the pleasure and self-satisfaction after solving
a problem for a few days with success is one of the best feelings.

Let CP get into your mind and find a true desire to practice. Don't try to
force yourself to practice in an organized way.

Self Deception
It is easy to lie to yourself about practicing and spend time without
actually doing meaningful practice.
From the outside it is impossible to tell the difference: no one can
look at your practice and tell you for sure that you are deceiving
yourself.

According to my latest hunch, self-deception is the single biggest cause of


not improving. I want to boldly put forward three hypotheses:

The best practice method is any reasonable method that doesn't let
you deceive yourself.
If you are sufficiently motivated, almost anything satisfies the criterion
above.
If you are not motivated, then almost nothing satisfies the criterion
above.

The only motivation that matters here is a deep interest in the problems
themselves. If you just watched a video from Steve Jobs or Elon Musk
with a bunch of genericisms about success or read some motivational
poster and got some kind of inspiration — I don't think that will get you
very far. Interest in the problems is what matters here.

Are editorials evil?


A popular method of practice is the following:
Pick a problem with difficulty rating f (your rating) and start solving it. If
you haven't solved it after n minutes (or n minutes with no ideas), read
the editorial.

In principle, I think that is a reasonable way to train. Here's what I think


will really happen with a lot of people.

Pick a problem with difficulty rating f (your rating). Pretend to solve it for
n minutes, then read the editorial. "solve" means "come up with the
solution (and possibly, implement it)", not "implement the solution".

Forget editorials. Start solving problems with no intention to ever read the
editorial. Stop asking "how many minutes" and start asking "should I read
the editorial at all?": not "when" but "if".

Remember

How many problems you have solved is an OK measure for how


much effort you have put in, but if it becomes your goal, then you are
by human nature likely to solve a lot of problems in the easiest way
possible which of course defeats the purpose of practicing.

Goodhart's law, "When a measure becomes a target, it ceases to be a


good measure".

Reference
1. indexed_at::31 July 2023 Monday
2. [Link]
3. [Link]

Common questions

Powered by AI

The argument is that motivational content from figures like Steve Jobs or Elon Musk provides generic inspiration rather than fostering a genuine interest in problem-solving. Such content may not inspire deep engagement or sustained effort necessary for mastering competitive programming. The improvement comes from intrinsic motivation and a deep interest in the problems themselves, not from external, nonspecific motivational stimuli .

Effective practice in competitive programming is deeply intertwined with motivation, as genuine interest in solving problems directly influences the depth and quality of practice. When motivation is intrinsic, practice becomes more meaningful and productive, focusing on understanding rather than completion. Thus, true improvement is achieved by maintaining a keen interest in the challenges themselves, rather than superficial motivation derived from outside sources .

Enjoying the problem-solving process is fundamental in competitive programming as it sustains motivation and engagement. This enjoyment leads to intrinsic motivation, encouraging sustained effort and deeper learning. Over the long term, it helps build resilience and the ability to tackle increasingly complex problems, critical for significant skill development. Engagement driven by enjoyment ensures that learning remains a fulfilling and iterative process .

Immersing oneself in solving harder problems promotes deep critical thinking and allows the brain to explore creative solutions. The insights and intuition gained from such problems are of higher quality than simply practicing a large quantity of questions. This approach leads to genuine learning and development of problem-solving skills, rather than marking problems as solved. Moreover, the real improvement comes from solving problems that challenge and push one's cognitive abilities, thus strengthening intuition over mere repetition .

Excessive reliance on editorials can hinder the development of problem-solving skills by providing premature solutions that impede critical thinking and self-discovery. It may lead to superficial understanding and dependency, which restricts the ability to tackle unfamiliar problems independently. Instead, focusing on solving problems without immediately resorting to editorials fosters resilience and deeper understanding .

Intuition in competitive programming is crucial for recognizing patterns and devising efficient solutions. It can be developed by consistently tackling complex problems that require creative and critical thinking. Practice should focus on understanding solutions deeply rather than completing numerous problems for the sake of quantity. Engaging with problems over time and reflecting on different approaches builds a strong, intuitive problem-solving framework .

Self-deception prevents true improvement by leading programmers to believe they are practicing effectively when they are not. It creates an illusion of progress without real learning. To overcome it, one should be motivated by a genuine interest in the problems themselves rather than external motivators. Practicing methods that prevent self-deception involve reasonable approaches where one's interest in the problems is paramount, ensuring authentic engagement rather than superficial effort .

To ensure genuine learning, competitive programmers should focus on understanding the underlying principles and techniques of problems rather than merely completing them. This involves reflecting on solutions, exploring different approaches, and consistently measuring understanding rather than progress by quantity. Avoiding self-deception through honest assessment of one's skills and motivations ensures that practice leads to meaningful skill acquisition .

Goodhart's Law suggests that when a measure becomes a target, it loses its effectiveness as a measure. In competitive programming, if the target becomes solving as many problems as possible or relying on editorials after a set time, the original goal of understanding and learning from the problem-solving process is undermined. Instead of focusing on when or if to read editorials, the practice should emphasize understanding whether they are needed at all, fostering genuine learning and skill development rather than just problem completion .

Engaging deeply with competitive programming can inspire the creation of more challenging problems as natural extensions of one's learning experience. As one grapples with complex problems, new insights and questions often arise, driving the invention of sophisticated problems. This iterative process enhances cognitive skills and encourages a deeper understanding of algorithms and data structures, fostering a robust problem-solving mindset .

You might also like