CP is a fascinating world, and every participant has a unique journey. Today, I want to share a story about me and my friend evilbaker evilbaker, which brings out an interesting perspective on the role of talent versus effort.
We solved more than 500 problems on online judges, grinding to improve our skills. Yet, despite our unwavering dedication, we remains a newbie in the CP world. It's not that we don't understand the concepts or lacks persistence—we simply struggles to piece everything together during contests.
On the other hand, I've seen friends who reached the expert level after solving fewer than 500 problems. Some climbed the ranks in no time, mastering new topics and implementing them with ease. They seem to have a knack for quickly grasping problem-solving techniques, optimizing their code, and performing under pressure.
this made me reflect on how much talent influences performance in CP. While effort and practice are undeniably important, some individuals seem to have an intuitive understanding of algorithms and data structures. I really want to know are we doing something wrong ?we really want to improve before it become frustrating and depressing for us thank you
First of all, keep pushing through! While it might be true that some people seem to climb higher ranks per number of problems solved, I do believe this metric is misleading in some sense. Throwing aside the fact that some people may practice on other platforms as well, I think one common trait among people who improve fast (in the sense of delta per problem solved on CF) is that they try to internalize the heck out of a problem before they move on. What I mean by this is that they go beyond just reading the solution and upsolving. They may even think about extensions to recent problems they solved, and try to figure how to solve variants.
More importantly, I recall a blog by Radewoosh, https://codeforces.net/blog/entry/91114, that I fully agree with. In particular, he says the following: “Every really good person gave a part of their life to CP. And I don't mean giving up Saturday parties or having no friends, I kind of mean the part of their minds. You have to really want to get better and find real pleasure in practicing and watching your progress. It also means catching yourself thinking about various problems or seeing algorithmic interpretations in many aspects of real life.”
In essence all I am saying is that two 500-solve users on CF may have vastly different understandings of algorithm fundamentals, due to differences in how much mental space is used outside of “problem grinding sessions.”
If you really want to improve fast, you should think more outside of CF as well! One may argue that this tendency to think hard thoughts is related to talent. I won’t deny that. But, if you are sufficiently interested or immersed in algorithms, you will find that doing so is very natural. Good luck in training!
Your rate of progress at cp will be directly proportional to your jee mains math score. Its a pattern I have noticed.
not true, i was 100%ile in math.
what is even going on in your pfp
ask yourself why do you need rating so much, it's worthless to run behind rating, why are you are making a loveable thing like problem-solving non-lovable? if codeforces platform didn't had rating at all, would you solve problems? if the answer is no, leave it all and first find the beauty of this hobby.
It's mostly a knack for mathematical thinking. Two people with 500 cf solves may have widely different exposure to mathematics before cf and that makes a huge impact in the largely mathematical base of cp. Also indeed different people learn and recall patterns in questions quicker leading to quicker rating growth.
What you are doing is exactly what you need to do, keep practicing and your ability will improve. Comparing yourself with someone who got to expert in less than 500 problems is not right the other person may have prepared for IMO or have a IOI background, you never know what additional problem solving practice the other person has.
Think about this: why do companies use competitive-programming-style problems in their interviews? Do they really want to hire people who can implement Dijkstra's or toposort? Those things are useless on the job. What they really want is people who are good at problem solving (aka have high $$$IQ$$$). The competitive programming interview is just a disguised $$$IQ$$$ test.
The reason why they don't use actual $$$IQ$$$ tests is because of two reasons:
$$$IQ$$$ tests are banned in some countries.
$$$IQ$$$ tests are standardized on those who (ideally) have no experience with the types of questions they ask, so a bunch of job candidates studying for an $$$IQ$$$ test might cause a massive ceiling effect.
So, actually, in the setting of an interview, competitive programming problems are a good substitute for $$$IQ$$$ problems.
Anyway, since these problems are essentially used as $$$IQ$$$ tests in some interviews, of course one's aptitude is gonna play a massive part in their solving skill.
In which country are iq tests banned
I should have been more specific — they are banned for hiring purposes (at least here in the US). Discriminating based on IQ is like discriminating based on race or height. All three would be allowed in a true free market economy.
Also, the US government thinks it's all high and mighty for banning IQ tests but the military uses one of the best IQ tests of all time to sort out its recruits.
Ahh I see. But I don't think it's the same as race. Race does not inherently impact someone's ability to do any particular job, while IQ does. Height is somewhere in the middle I guess as it depends on the job. It seems stupid to not allow IQ bases hiring, but I guess that they circumvent it by using problem solving. Based take ngl.
Is that test publicly available? And also, a bit off topic, but have you ever taken an iq test?
No, but there was a time when they had maybe $$$6$$$ or something forms of the test that they would give out to the recruits, and, of course, some "recruits" started to memorize the questions and sell them, so those forms are definitely out there somewhere, but that was in the $$$80$$$s. Nowadays, it is pretty much an online test, and its question bank is huge, so there is no point in trying to memorize all that. Anyway, there are some free tests out there that come close to its validity. For example, the US admissions test, the SAT, used to be a really good IQ test until they changed it in the $$$90$$$s. There is also the $$$WWII$$$ US army $$$IQ$$$ test, which is up there. I can send you links to them if you are interested.
Also yes, I've taken many IQ tests. In fact, when I didn't know what leetcode or codeforces was, I used to do those for fun instead.
I am kinda scared to do an iq test, as i believe i will subconciously limit myself if i see a number that i do not like, but thanks anyways. Were you ever discouraged when you failed or got a bad score on the tests?
Oh alright, well you can ask if you ever change your mind.
In the beginning, yes. But then I figured out that it was always the test's problem. If I scored too low, it was the test's problem. If I scored too high, it was also the test's problem. In fact, I've figured out that every single test is bad (even the US army test) except for one called the Stanford Binet 5th edition. And I haven't taken that one.
I've reached Specialist after solving nearly 2000 problems, but the problem was what I was solving. When I solved wisely and gradually and for a reason not just solving (to master this topic, to be comfortable with a specific difficulty) I have done only 500 or 400 and my level was really increasing fast not like previously, so I suggest, solving problems in difficulties (1200-1600) and joining many virtual div2 contests, and let your goal for now be solving Div2 A and B in 30 to 1 hr (or solve Div2 C) avoid solving ez problems
This sheet is good: TLE Sheet
Brain myelination, size of the short term memory, etc.
Hardware is very important.
Some people can't even imagine things in their mind at all (aphantasia).
But at the very beginning you don't quite know the hardware you are running, so it's worth giving a try. 500 problems is good enough sample size to understand your hardware.
The majority of the people aren't suited for competitive programming because of the hardware.
It's a hard pill to swallow.
People venture into this field because of the industry demand and monetary incentive.
Noone is willing to accept that they are not fit for the task as it is a direct hit to the ego and even borders with one's chances of survival.
That's why you see chronic obsessive compulsive disorders developing in so many young students: I need to practice harder bro... just one more problem bro... I got this bro.. practice makes perfect bro...
The longer you are in that obsessive compulsive state, the further away you remove yourself from being a healthy well rounded individual and the chances of you actually contributing meaningfully to the society are diminishing every year you stay under this veil that paints this illusion that you can do anything, you can achieve everything. You think that you are progressing when in reality you submerge yourself deeper and deeper under water and eventually you reach a point of no return and no hope of reversing the damage, no hope of ever becoming a healthy individual, ever, again.
then how can i practice effectively?
i have seen consistency surpass talent in cp world, so keep coding, i was first among my friends to become pupil but they were consistent they became specialist i am still trying
it's basically bivariate normal distribution with Talent and Effort. both important.
e.g) people who put in the same level of effort will be mapped to a rating based on their talent. and vice versa
but I do believe talent has a higher SD than effort. It's very easy to increase your rating if you are smart, and some rating is simply unachievable even if you push top 0.1% of effort with median talent.
if you are afraid don't do it, if you are doing it don't be afraid . thats it .keep it up