### yongwhan's blog

By yongwhan, history, 19 months ago,

Hi guys!

I am soliciting an opinion on a practice strategy for a low-purple who are aspiring to become a mid-orange. I am pretty sure this kind of questions is very frequent and common among competitive programmer but I would like to just confirm your opinion to be sure. I read "A Way to Practice Competitive Programming" by Masataka Yoneda among other things. So, I know one way of getting there. But, I would like to know if there is a better recipe before I commit to doing something naive.

To get to orange from purple, is it SUFFICIENT to practice problems in rating ranging from 1900 to 2300?

My practice strategy has been focusing on all the problems that are below 1900 mostly, hoping to become a purple through solving problems fast. However, I have a feeling that I would hit a wall pretty quickly if I continue this recipe since the problems in division 1 are much harder.

Now that I finally became purple (after solving some thousands of problems in Codeforces and other platforms), I would like to know if my naive strategy of solving all problems in a particular rating range is enough to get me to the next rating color (from purple to orange, from orange to red, and so on).

I think this question is especially relevant to those who worked hard to get to orange from purple because, if it did not take a long time to get to orange color, I assume that you had a prior exposure to competitive programming in some other shape or form.

Those who had to train hard to earn the color change from purple to orange, what worked especially well for you guys?

I am looking for a genuine advice for me to get to the next level.

Thanks!

• +136

 » 19 months ago, # |   -220 uh, I went from low purple to mid orange without any practicing (it took a lot of months). the only thing you need is a talent, not practicing.
•  » » 19 months ago, # ^ |   +51 From my point of view your answer is kinda ... If it is only talent ; why your rate is not at maximom state ? 200 differ from your maximom rate so you can't call this talent and your answer is selfish and helpless.
•  » » » 19 months ago, # ^ |   -67 Because of dispersion. 5 months ago the problems were easier for me than now. Because at cfr 623 I got less points for solving the 2500 problem than these dudes who solved the 2300 problem. Because of gladiolus
•  » » » » 17 months ago, # ^ |   +38 It is weird to say that practice has nothing to do with your improvement. If it were only talent, why is there a steady increase in your rating over time? Unless you have somehow acquired talent over time (which most people would probably call learning through practice) there would be no reason that you wouldn't have reached where you are now within a couple contests.
•  » » » » » 17 months ago, # ^ |   -41 If it were only talent, why is there a steady increase in your rating over time? Because I have read a lot of theoretical articles
•  » » » » » 17 months ago, # ^ |   -21 and contests' editorials (without upsolving)
•  » » » » » » 17 months ago, # ^ |   +14 Isn't that practicing?
•  » » » » » » » 17 months ago, # ^ |   -44 I don't need to actually solve the problem, I only read the editorial, often without trying to solve by myself
•  » » » » » » » » 17 months ago, # ^ |   +9 Practice, as defined by Merriam-Webster Definition 2.a: to perform or work at repeatedly so as to become proficient. Surely I'd assume that reading the editorial improves your programming skills.
•  » » » 19 months ago, # ^ | ← Rev. 3 →   -66 $4$. Because in this problem 1320C - World of Darkraft: Battle for Azathoth I thought my power should be better than their power and my toughness should be better than their toughness and kept getting wa2
•  » » 19 months ago, # ^ |   +139 without any practisingokay mr 185 contests
•  » » » 18 months ago, # ^ |   +8 *Mrs
•  » » » » 18 months ago, # ^ |   +17 *Mr
•  » » 17 months ago, # ^ | ← Rev. 2 →   -56 Talented bitch was struggling to become an expert once! moreover look at this and not to forget 187 contests :| Practicing like crazy dumb ass bitch!
•  » » » 17 months ago, # ^ |   +26 Lmao be polite please, don't call the women "bitches".
•  » » 17 months ago, # ^ |   -7 well u sure are talented but some seniors and alumni of my college did better(way better) than you and they told me that they are not prodigies or anything they just worked hard!!
•  » » » 17 months ago, # ^ |   +4 They lied
•  » » » » 17 months ago, # ^ |   0 (；一_一) ok
•  » » » » 17 months ago, # ^ |   0 William lin has already stated many times in his videos that the only thing that makes a difference is practice(he is an international master). now before declaring this as a lie do you know what actually practice does to you?. sure you need talent no denying that but what makes practice beneficial ? if you can answer that then you would know what you were up to till now.
•  » » » » » 17 months ago, # ^ |   +3 William Lin lies
•  » » » » » » 17 months ago, # ^ |   +10 and you speak the truth? lol.
•  » » » 17 months ago, # ^ |   +11 I see a lot of participants who work hard, but they remain to be green
•  » » » » 17 months ago, # ^ |   +3 they must be doing easy peasy problems!! i believe if i do hard ones i will become orange one day :)
•  » » » » » 17 months ago, # ^ |   +7 Yes you will. I believe, almost everyone becomes at least orange, if they continue solving hard problems for 4-5 years. But as a matter of fact, humans are not equal and many of us will take 3-4 times more effort to reach orange/red than many others.I am near orange now, but I still suck in problems which require approach that I have never seen, almost as much as I used to suck when I was cyan. It's just that I know more approaches and know more about what to look for. Taking the same test over and over again increases score, but it doesn't increase intelligence. Anyone who knows how to think, shouldn't need more than one year to reach orange. Others just keep learning what to think and use it when they face similar problem later.
•  » » » » » » 17 months ago, # ^ |   +27 I believe, almost everyone becomes at least orange I don't believe
•  » » » » » » » 17 months ago, # ^ |   0 I kinda hope you are right, because it gives me a sense of security to know that many won't be able to touch my level even after 4-5 years of practice. But my dataset says otherwise. Out of my 13 friends who are doing CP for <= 4 years, 5 have already become orange, 4 are very close.
•  » » » » » » 17 months ago, # ^ |   0 Are you sure? I also want to believe. But, time is going on. I have solved 60 more problems since I became 1850. Meanwhile I droped to 1686 with 180 problems solved. Now I am facing doubts about myself going to orange.
•  » » » » » » » 17 months ago, # ^ |   0 No, I am not sure. But from my dataset of 13 people, almost everyone became / are becoming orange in 4 years. I have seen similar comments from other users too (that all their friends who continuously solved hard problems for 3-4 years have become at least orange). If you practise primarily from CF, then you haven't really solved much hard problems. ~40 1900+ problems isn't much. If you are this good so soon, I am pretty sure you will be at least orange after 3 years.
•  » » » » » » » » 17 months ago, # ^ |   0 Thanks. Really motivating. Now, in which rating range I would solve currently?
•  » » » » » » » » » 17 months ago, # ^ |   0 In maximum difficulty where you solve at least half of the problems on your own.
•  » » » » » » » » » 17 months ago, # ^ |   0 Also, don't get so affected by contest-performance. If you are not super-talented, your contest performance depends hugely on problem-set. If you have seen similar problems / ideas, you will surely do well. Otherwise, you may not. I am confident to do well on DP, data-structures etc. because most problems in these categories have very similar ideas. But I suck in constructive problems with completely new idea.
•  » » 17 months ago, # ^ |   0 You are a talented programmer, but don't lie at least. Solving problems in contest is also practicing for next contest
•  » » » 17 months ago, # ^ |   0 there are a lot of participants who solve problems in contests, but they remain green in the next contests.
•  » » 17 months ago, # ^ | ← Rev. 2 →   0 This is probably the most realistic answer :). The negative voting is proof since public hates the truth.
 » 19 months ago, # |   +136 First step: maintain div1. That means solving AB fast (around 30 minutes at most?) and C slow sometimesSecond step: get yellow. Solve ABC fast-ish (under 1h), ofc it depends on contest difficulty but this sounds like the average. In this range you can find people between master and IGM, so a few minutes can make the difference between top50 or top300 going way down if you get too many WA or take too long for some problem. An extra problem every once in a while is a nice boost of rating. Also, the difference between GM and IM could be doing this consistently, I haven't looked much into it but that sounds about right.Sounds like practicing in that difficulty range would help, just don't look at tags to make it closer to a real contest where you don't know what the problem is about. Keep in mind that in the contest you'd need to solve these problems in around 20 minutes or less. If you practice like this try throwing a harder problem once in a while to challenge yourself, gotta do something in that 1h+ downtime after you solve the problems that should be easy for you.I still think diving into really hard problems somewhat often between usual practice (for me usual practice was cf and icpc virtual contests + upsolving) like once in a week or so is optimal for fast learning tho.
•  » » 19 months ago, # ^ |   +43 I never understood why you would analyze things like "I need to solve AB fast and then C in 1 hour". Mainly solve problems slightly above your level and you will get better.
•  » » » 19 months ago, # ^ |   +29 I agree that you should solve problems slightly above your level and you will get better but to get rating either you solve faster than others or solve an extra problem. Chances are, if you solve an extra problem you solved the earlier problems fast too so you have more time for the last problems.I talk about time more because I think it's worth reflecting why/where you spend time in solving problems, and what you could do to solve it faster like knowing a data structure, not getting stuck in the same idea and being able to start from scratch again, rereading the statement if the problems looks strange, thinking about how to implement with simpler code. I could find many other examples, the worst one is when you see a problem that you should've solved because you've seen something similar before but couldn't remember until after the contest when discussing or didn't upsolve (recent relevant example, lots of people that solved the cf div1B that was IOI shoes and didn't solve it during IOI).Now it sounds related to just "gitgud" right? An important part of having better performance is solving faster, even more so in short contests, but everything is related in some way.
•  » » » » 19 months ago, # ^ |   0 But you don't decide to "solve faster than others or solve an extra problem" in order to get a better place. If you are good, you perform well, which means being fast and solving more problems. So yeah, the goal should be to get good, not to aim for the effects of being good.Sure, nobody should focus just on easy problems or just on hardcore problems. But analyzing exactly how a good contest performance looks like in a CF round... that's some high-level shit that nobody should care about.
•  » » » » » 17 months ago, # ^ | ← Rev. 2 →   0 Nice
•  » » » » » 17 months ago, # ^ |   +5 But you don't decide to "solve faster than others or solve an extra problem" Framing it this way has a few advantages.First, it's a psychologically nicer, more tractable framing of the problem. It doesn't sound very motivating to say to yourself "do better", but saying "let me try to solve X problems under Y minutes" is much less intimidating, especially if you are already close to that. This framing makes the goal feel more real and reasonable.Second, it's a useful benchmark. If you can reframe your desired rating into a desired level of contest performance, it's arguably a better, more precise metric to track. Ratings have a good amount of noise in them -- sometimes you get un/lucky, sometimes you feel great/terrible, etc. This way, you can track your progress even without a rated round.
•  » » » 19 months ago, # ^ |   +39 What do you mean exactly by "above your level"? Do you consider the time taken to solve the problem? The problem rating? Or if the problem uses stuff that is unknown to you?
•  » » » » 19 months ago, # ^ |   +8 It means a hard problem that you can still sometimes/usually solve, likely not after just 5 minutes of thinking. If you solve such problems, you will from time to time encounter new techniques and algorithms.I practice nowadays by solving AGC B-E problems but I'm not doing F mainly because I'm lazy and not motivated enough. I can comprehend an editorial for F and that's a very important thing — solving too hard problems is a waste of time because you would spend hours to fully understand a solution. Also, I solve problems div1-CDE in Codeforces and just sometimes skip the last one if it's very difficult and not my taste of topics — but I should do that one too if I want to maximize my improvement.
•  » » » 19 months ago, # ^ |   +13 I have solved 60+ problems in 2300 difficulty and I think I can solve ~70% problems in that difficulty. But I often take ~90 minutes. I don't even get continuously stuck for 30 mins, I just get a lot of wrong ideas that lead nowhere and in a continuously larger gap of time between the ideas. Should I go to higher difficulty, or stick to current and try to get faster?
•  » » » » 19 months ago, # ^ | ← Rev. 2 →   +8 Taking ~90 minutes is quite normal for hard problems. It means you would perform well in IOI or ICPC, so I would say that you're doing fine.If you just care about your Codeforces rating, solving easy problems for speed is important too.
•  » » » 19 months ago, # ^ | ← Rev. 4 →   0 I agree with your comment here. However, it seems like finding problems "slightly" above my level is a bit tricky when I try to make a virtual contest though. It seems like putting division 1 ABC would be a reasonable estimation on what these problems are. I will not put too much emphasis on timing as I ramp up the training but as I get more practice done I will slowly and gradually be more sensitive to the time spent on solving a problem. Does this strategy align well with what your thought on the ideal practice strategy is?
•  » » » » 19 months ago, # ^ |   +5 A virtual contest is a good tool to measure your skills and to have some fun, not a perfect one to practice, I guess. But yeah, div1 ABC should be ok for you.
•  » » » » » 19 months ago, # ^ |   0 Thanks, Errichto! Now the hard work starts from my end :)
•  » » » » » 18 months ago, # ^ |   +15 Errichto could you please elaborate why virtual contests aren't the best way to practice? What would you suggest instead of them?
•  » » » » » » 18 months ago, # ^ |   +11 Solve single problems. After you are stuck for a long time, look for a hint/push in an editorial.Virtual contests usually mean solving some easy problems because you don't have enough time for a next one.
•  » » 19 months ago, # ^ |   0 Thank you so much for your genuine recommendation, tfg! :)I will follow your suggestion and start practicing with division 1 ABC problems. Rather than strictly following the problem rating, I will follow that strategy instead because it sounds like solving division 1 ABC problems would be effective enough. I will make it a goal to solve all of them under 1 hour eventually.Also, following your recommendation, I will make sure to add a really hard problem in the mix in each virtual contest for a faster learning experience.I will start with a virtual contest that is either 75 minutes or 90 minutes long to simulate the actual contest, slowly making it shorter as I gain more confidence.Again, thank you so much for your candid suggestion. I will make sure to report later once I see the result of the future training.
 » 19 months ago, # |   +43 The difference between stable purple and yellow is Div1C. If you can solve Div1 ABC consistently (3 out of 5 contests), even if you solve C at last moment, you will get yellow soon. The difference between master and IM is mostly consistency and speed, as in most contests D is only solved by GM+ coders.
 » 19 months ago, # | ← Rev. 2 →   -17 Why don't you start participating in group contest? I have just started solving shaazzz group contest problems and have clearly seen a big impact on my speed and problem solving abilities. I know I've not been candidate/master (yet), but finding a good source of problems would definitely be a good choice to make. Feel free to join shaazzz group or any other group you would like Also I am not this group's admin, and I don't benefit from inviting people to it
•  » » 17 months ago, # ^ | ← Rev. 2 →   +4 Why so many downvotes? He just introduced a group!
 » 19 months ago, # | ← Rev. 3 →   0 best strategy is to solve questions quickly in div1 + div2 combined or educational.Edit : The above strategy will make you orange but to get to mid orange, you simply need to solve A, B under 1 hour and C in another 1hour. I am saying this because I have analysed this too much. Also your strategy is cool, just give some virtuals with the above time limit and upsolve (This is how I reached blue, I am trying to reach purple using the same strategy, I would be happy to take your suggestions.)
 » 18 months ago, # |   -26 bRO YOU HAVE TO BE indian and solve all div2abs i know bhecauyse ui anm tourhist and i good bro sir