E869120's blog

By E869120, 18 months ago, ,

Dear Codeforces Community.

Today I want to share some ways to practice competitive programming and getting rating. I think this is helpful for those who is practicing competitive programming hardly but rating is sluggish. (By the way, on July 17th, I have a project of competitive programming said CombNaf in Japan. I did a lecture about this. Great thanks to the CombNaf's organizer is Nafmo2.)

I will write this by 4 steps: rating 1000 --> 1250, 1250 --> 1500, 1500 --> 1750, 1750 --> 2000, in Codeforces Rating System.

Before writing about each step, I wrote it as premise: You don't have to do this way. This is just a way to practice. Ways to practice is different among people, so I think this may not the best, but I hope this is useful.

Step 0: Some types of contest (A knowledge)

In order to explain step 1-5, I wrote about the types of programming contest.

Codeforces

• This judge. There are Div.1 problems and Div.2 problems. The number of contest is mainly 5-6.
• The problems of Div.2 said Div2 A, Div2 B, Div2 C, Div2 D, Div2 E,... in order.
• The problems of Div.1 said Div1 A, Div1 B, Div1 C, Div1 D, Div1 E,... in order.
• Problems are sorted by difficulty in each contest.

AtCoder
• There are ABC (AtCoder Beginner Contest) / ARC (AtCoder Regular Contest) / AGC (AtCoder Grand Contest) in AtCoder, but in this blog I will explain about ABC / ARC.
• There are 4 problems in ABC and ARC.
• Each problem in ABC is said ABC-A, ABC-B, ABC-C, ABC-D, and each problem in ARC said ARC-C, ARC-D, ARC-E, ARC-F.
• Problems are sorted by difficulty.
• In each contest, ABC-C and ARC-C is the same problem, and ABC-D and ARC-D is the same problem.

TopCoder
• There are Div.1 and Div.2, and there are contest for each division.
• In Division 2, there are three problems, which is said that Div2 Easy, Div2 Medium, Div2 Hard.
• In Division 1, there are three problems too, which is said that Div1 Easy, Div1 Medium, Div1 Hard.
• Easy is the easiest question of three, and hard is the hardest question in these three as naming.

Step 1: Rating 1000 --> 1250

In order to gain rating from 1000 to 1250, you should solve at least one problem in Div.2 contest in Codeforces. In AtCoder, 300 points problem is the level of rating 1100-1250. So I suggest these two ways:

• Solve Div2 A 50 problems. When you solved 50 problems, you might be able to solve >80% of Div2 A.
• Solve ABC-C in AtCoder. There are many educational problems in AtCoder Beginner Contest.

In order to solve problems, you should make a Bingo like example.
In addition, most of these problem is easy, especially concept. So you should see editorials if you can't reach idea 10 minutes.

Step 2: Rating 1250 --> 1500

In order to gain rating from 1250 to 1500, you have to solve at least 2 problems faster in Div.2 contest. In addition, the level is as same as TopCoder Div2 Med and AtCoder ABC-D. (ABC-D is little high level for 1250) In addition, there is many educational problems in AtCoder, there is some point to do fast-solving practice in TopCoder, and Codeforces is the target judge. So I suggest these three ways:

• Solve Div2 B 50 Problems. (Most of problems are good quality)
• Solve Div2 Med 50 Problems. (The quality of problem is good, but Java Applet is inconvenience...)
• Solve ABC-D / ARC-D in AtCoder. (A little high level for 1250)

In addition, I think that you should mind fast-solving in latter problems. (After solved 15-30 problems)
In order to mind fast-solving, you should use timer. You should count from "opening problem statement" to "getting AC". If you can, I think that you should make a spreadsheet of problem, solved and time.

Step 3: Rating 1500 --> 1750

In order to gain rating from 1500 to 1750, you have to solve at least 3 problems faster in Div.2 contest. There are a lot of concept problems in Div1 A = Div2 C, and in Div2 only contest you have to solve as fast as possible. I made a table of judge and points to see what to solve easier.

Judge Concept Imprementation Fast solving Level
Codeforces Div2 C 50% o 50% 1500-1800
TopCoder Div1 Easy o x o 1500-2000
AtCoder ABC/ARC-D 50% o 50% 1400-1600

I suggest these two ways to improve rating as far as see the table:

• Solve Div1 Easy and Codeforces Div2C as the same period. I think if you solve <50 problems for each type, your rating will increase strongly, but I suggest you should solve until satisfied yourself.
• First solve ABC/ARC-D in AtCoder until solve 80% of ARC-D. Second solve Div1 Easy in TopCoder for concept-practice or fast-solving practice.

My rating increased sharply when I started TopCoder Div1Easy, and solved ~50 Div1Easy problems. This is why I suggest TopCoder Div1 Easy for concept-practice.
In addition, you should use timer for practicing fast-solving. You can use competitiveprogramming.info to solve TopCoder Div1Easy, and you can make spreadsheet like following picture to solve TopCoder. (This is example of Div1Med that I am using.)

Step 4: Rating 1750 --> 2000

This is the last step that I can write. In order to gain rating 1750 to 2000, first you must go up to Div1, and you have to compete a little better in Div1. You have two steps, so I divided into two range.

1. Rating 1750 --> 1900
You should solve Div2C faster and stably. So I suggest that practice these two:

• Overcome your weakness (For example, DP problems, Graph Theory, Imprementation, etc.)
• Make your library (For example, RMQ, BIT, Segment-Tree, etc.)
I think making library is good because you can shorten the time that writing RMQ class, BIT class, etc.
And to overcoming your weakness, I suggest that analyze your time in contest and practice, scoring and make a spreadsheet as follows:

2. Rating 1900 --> 2000
This step's range is only 100, but I think this is difficult as far as see A mystery of CF rating distribution. There are many people in [1900, 2000), but there aren't many people in 2000+. In Div1, there are many concept-main problems. So I think these two are useful for practice:

• Codeforces Div1 B. In the story, the goal is becoming 2000+ in Codeforces. So practicing in Codeforces is the best too to get rating in CF.
• AtCoder ARC-E. ARC-E is 600-900pts in AtCoder, and this is level of rating 1900-2200. In addition, these problem is very like to Codeforces.

These problems are so difficult, so I suggest that you should give up and see the editorials if you can't get any idea though you try over 80-150 minutes. In addition, ARC-E is difficult for 1900, so I think you don't have to mind fast-solving.

Step 5: Extra corner

In extra corner, I suggest two ways to compete well in Codeforces. This is also out of the problem-practice, but I think this is effective. (I did this and I feel this is effective.)

• Do Virtual Contest / Virtual Participation in Codeforces. This is a way of get use to contests.
• Take a rest for 10 minutes before real contests. This is a way to not get panic in the contest. It is also important in the contest on the mental side.

Conclusion

I suggest that five steps to practicing competitive programming. Ways to practice is different from a person to a person, so I don't think you must do this way. But this is one of the effective way I guess. (I think this is not the best because the way to fit is different among people.) I hope it will be useful even a little. (Also, sorry for my poor English.)

Please comment if you have suggestions and questions of this entry, and my way to practice.

•
• +181
•

 » 18 months ago, # |   +22 But sir , If everyone read your post and star solving according to your advice , then is it possible to get high rating for all?? As codeforces rating system says The summation of rating of contestant is equal before and after contest :)
•  » » 18 months ago, # ^ |   +6 Actually, no. Given the same resources, different people will use it differently. Given that everyone practices the same problemset, some may still turn out to be better than others because people understand stuff and think differently.
 » 18 months ago, # |   +88 There is another way around. Get to Div1. Solve Div1 E problem. profit.
•  » » 18 months ago, # ^ |   -10 I know you solved only problem E in Codeforces Round #415, and your rating increased. But do you think your rating always increases if you just solve Div1 E problem? I don't think so, because there are "Div1 A and B is easy, and Div1 C is easier than normal" contest.
•  » » 17 months ago, # ^ | ← Rev. 7 →   +10 Not always the case. In AtCoder I solved ARC-F once and ARC-E twice (usually I do not solve E until I completely give up on F, which happened few times so far) and my rating range is 600-1200 :/Edit.And the problem there is the fact, that the point differences do not reflect the difficulty increase. Quite often solving C and D is worth more or the same as E and sometimes even more than F. So if I managed to solve F or E I do not have time to solve both C and D.In CF a point value decreases with time. So if you are not quite fast, you can get lower score than solving A+B fast.Edit2.As regards AtCoder. The idea of a point value is: AtCoderPointValue/2 = TCPointValue. And even though solving 2 x 250 pts in TC is nowhere near solving 500, that problem does not exist, as there are 3 problems only and each problem is worth more than the sum of all easier problems. In AtCoder there are more problems, so you could get a higher score by solving more simpler problems.
 » 18 months ago, # |   +113 [Tutorial] A Way to get high contribution: From 0 to 100Write 'bout bullshit.
 » 18 months ago, # |   +45 Will there be a follow-up post on how to get from 2000 to 3000?
•  » » 18 months ago, # ^ |   -18 In fact, I did a lecture in CombNaf, which is one of the programming event in Japan. The tutorial that I used in CombNaf was from grey to red because my rating is AtCoder was middle of orange then. (Link) But this is Japanese version, so I have to translate from Japanese to English. In this process, I decided to change the target from AtCoder to Codeforces. But my rating is 2051, middle of purple. So I thought that I cannot write how to practice for red then in CF Version. But these days I'm praciting TopCoder Div1 Med for becoming red. There are a lot of concept-main problems in TopCoder Div1Med.
 » 18 months ago, # |   +6 Thanks for the article E869120! It seems really useful and I might give it a try but I would like to clarify some things before I start.I just had some questons:1) I was not aware of AtCoder but it seems AtCoder's contests have tasks A,B,C,D ..., so what do you mean when you say "ABC-C in AtCoder."? Do you mean to solve tasks A, B, and C? Then what does the "-C" refer to? Also in step 2 you say "ARC-D in AtCoder", what is "R" for?2) How exactly can the bingo approach help us in step 1? Is it to solve at least 5 problems horizontally, diagonally or vertically? What's the point of your middle box with the "Is it rated?" question?3) What do you mean exactly with the "o" and "x" in the table of step 3?Thanks :)
•  » » 18 months ago, # ^ |   +7 Answer to 1: There are 4 problems in ABC. (ABC-A, ABC-B, ABC-C, ABC-D) There are 4 problems in ARC. (ARC-C, ARC-D, ARC-E, ARC-F) In ARC/ABC (like Div.1 + Div.2 contest in CF), ARC-C and ABC-C, ARC-D and ABC-D problem are the same. And "ABC/ARC-C" means that you should solve the first problem of ARC (ARC-C) / the third problem of ABC (ABC-C). ABC-C problem and ARC-C problem is the same in each ABC/ARC contests. Answer to 2: The bingo rule is 5-in-a-row like this problem. Horizontally, diagonally and vertically are all OK The bingo helps your motivation up. (For example, if you solve 5-in-a-row, you get point) I made the bingo randomly in Codeforces Round #369-#424, so "Is it rated?" middle cell is only a coincidence. Red / Yellow / Green cell color is only a decoration. Answer to 3: o means that the effectivity is high for concept-practice etc. x means that the effectivity is low for concept-practice etc. 50% means that the effectivity is medium for concept-practice etc. Sorry for my poor English. Thank you for reading my post.
•  » » 18 months ago, # ^ | ← Rev. 2 →   +33 "That's why I keep saying becoming a red coder is the start of competitive programming." I've been lying myself for a couple of years then XDNo, seriously, I liked what you said :) It's a little bit extremist I would say but I like it haha, even though I'm not red -yet-.I would like to know if some top coders feel the same way as you. I feel that something that can help you develop intuition is to explain things to others. (but again, I'm not red xD)
•  » » 17 months ago, # ^ |   +10 "Legend rank is the beginning of true cultivation"
 » 18 months ago, # |   +2 Has anyone else also tried this and it worked?
•  » » 18 months ago, # ^ |   +61 So you expect someone to increase rating from 1000 to 2000 within 26 hours.
•  » » » 18 months ago, # ^ |   0 I meant if someone has tried this way before this blog came up and had good results.
•  » » 18 months ago, # ^ |   -35 Been doing the same thing for months now, not improving very well, I am just a specialist now(In real account).
•  » » » 18 months ago, # ^ |   +3 An imaginary account getting real downvotes. :)
•  » » » » 18 months ago, # ^ |   -12 Now, that's what I call complex.
 » 17 months ago, # |   +16 I wrote this comment because 1 month passed after published this blog. Actually, there are many people who wrote a blog which is about "How to achieve 2000+ rating?" or something that relate about rating 2000, from a few years ago to now. Here is the example: Abhi_Sarkar1996's blog, 8 hours ago, Link anuj.charm's blog, 3 weeks ago, Link chessmaster's blog, 8 months ago, Link hepaxorm's blog, 14 months ago, Link Needless to say, this is only my opinion, but I found there are many people who want to gain to 2000+ rating, including after this blog published, so I recommend to read this blog article carefully. (I did not say that you should do for this way)
 » 17 months ago, # |   0 This issue gives me the most trouble.
 » 17 months ago, # |   +5 To make sure we all understand the core of the post. Hardly practicing means almost no practicing. Is that what you wanted to say?
•  » » 17 months ago, # ^ | ← Rev. 2 →   +5 Well, I think this blog is targeted to person who thinks like "I like programming contests, I want to learn competitive programming and get high rating". I think they will practice hard — but quality of practicing hard is also very important. He would like to say for Codeforces user "Only just solving Codeforces problem is not very good — solve the main three (Topcoder, Atcoder and Codeforces + OI?) is better." (I don't know other judge but combination of these three is very good). I am risking that the Topcoder competitive programmer is decreasing and people might forget Topcoder, but it is still the best way of growing "thinking solution" skills, as he mentioned. Also, he's saying that gray and green is very different, green and blue is very different, and also blue and yellow is very different. So the better way of practicing is different if rating is different. I think the main point is these two (but also other things or extra corner are written so you can read from it). Did you get it?
•  » » » 17 months ago, # ^ | ← Rev. 3 →   +3 It is too bad about topcoder. This blog finally motivated me to create a TC account. The problems were of course nice but I am not going to spend an hour learning how to submit solutions and deal with their host of UI problems. It makes me wonder how it got so popular in the first place.
 » 17 months ago, # |   +3 Could you please give the spreadsheet of Topcoder div1 easy.
 » 8 months ago, # |   +16 Please write blog on how to go from 2000 to 2200 now, thanks!
•  » » 8 months ago, # ^ |   +8 I'll post about the way from 1900 to 2200, within 2 weeks. Coming Soon!
 » 8 months ago, # |   +3 Did anyone go from 1500 or so to 2000 with this?
•  » » 8 months ago, # ^ | ← Rev. 4 →   0 I read parts of this [book](https://en.wikipedia.org/wiki/Outliers_(book))Based on his research the author concluded that to improve we need the right level of challenge. If its too easy you don't improve, if its too hard you give up. I think this current article is just about that principle put to use.The wiki page talks more about his 10,000 hour rule for being the very best.
 » 8 months ago, # |   0 Does this work after division revolution?
•  » » 8 months ago, # ^ |   +3 I think some people who can solve problem faster could go to 2100 in this way because they can participate in Div2 contest. Although this, participants whose rating is 2099 should get <=200-th place in div2 contests to gain rating (Top 4% of all participants), and there's much risk to drop 100+ rating in single contest for them. So, after division revolution, I think some people whose result is unstable might not reach 2000 in this way.
 » 8 months ago, # |   0 "In each contest, ABC-C and ARC-C is the same problem, and ABC-D and ARC-D is the same problem."I think,here you wanted to write ABC-C == ARC-A & ABC-D == ARC-B .
»
8 months ago, # |
+40

Tutorial: From Rating 1900 to 2200

Finally, I wrote the extension version of this blog, from 1900 to 2200. I wrote it because I achieved 2200 recently.