Hello I am starting university and want to get into the competitive programming scene. I can barely solve 1 or 2 div 2 A problems and can't even solve USACO bronze problems. I heard a lot of people say to keep practicing ,but I have seen many graphs of people with 300 — 700+ problems solved but still grey(very respectable work ethic).
Anyone know the right way to practice? (Mostafa saads training sheet / a2oj / etc )and how many problems should I solve? Only thing going for me is that I was decent at high school maths. Currently I can reviewing C / C++ and learning some maths related to computer science. What process do you think is best for an absolute numbskull that will guarantee atleast some progress [ a process I can trust]? Most of the competitive programmers in my university are way above me and I'm feeling very intimidated.
ik this post will get alot of dislikes but hey worth a shot.
Random blind solving for harder problems of my level worked best for me. I reached CM in 11 months with low effort with that way. I also participated in CF contests as much as I have the time and ability.
I can solve only some 800 level problem after 50mins or so. What do you think I should do? alot of people are stuck at grey even after solving many problems why do you think that is?
practice on 800-1000 problems as much as you can by random solving. Then if you are confident to solve at least 70% of them, then move on. For the problems you couldn't solve, check its editorial and see what new idea/topic it covered. If it is a new algorithm/data structure, read about it and maybe solve a bit about it. Keep doing that and eventually, you rating will increase.
Okay I'll take your word for it. Thanks for the advice bro. I'll try this for 4 months and check in with the results.
Same with me, I took more than 12 months to reach CM but I find random solving problems with difficulty higher than my rating helped. Topic wise practice didn't help me much though. And I mostly avoided participating in contest if I didn't feel like I was prepared/confident.
.
First of all, you have to believe that you can develop & grow. Check out this video: https://www.youtube.com/watch?v=hiiEeMN7vbQ about growth mindset.
If it is then everyone could become a master, but this isn't true, is it? Everyone's abilities are limited, it's impossible that everyone can solve div2a problems.
Ok, so I guess no one could ever say anything is an absolute guarantee, but I think you would agree that any reasonable amount of practice would just about ensure that one could solve these types of problems bar some sort of disability.
connorwang38 lets say I have an average IQ. You recently climbed out of grey ,in 6 months no less, how much did you practice per day and any tips?
Sure, I don't think IQ has a whole lot to do with it. If you check out my handle on CF Visualizer you can see I started averaging 20-25 submissions per day for a while. After my first 5-6 contests, I realized how much fun competitive programming was, so I started dedicating a lot of my free time to it. This must be the important factor, one's love for an activity, that will get you great results quickly. I don't think that one is limited by growth potential by a period of time, but rather how much time they put into it. In other words, practice came naturally without trying too hard, since I loved doing it. Not to say that it is impossible with such will, it will just take more mental will power.
My approach was simple: I spent 1-2 weeks switching from the language I knew, Java, to C++. This is not at all necessary, just what I did, as it looked simpler to code in. I did this simply by doing ~75-100 800 rated problems to get comfortable with the language while learning the differences. After this, I have used the same training method for the most part until now: I solve 50 problems of each difficulty increasing in difficulty each time (start with 50 800 problems, then 50 900, then 50 1000, etc.). I did not bother sorting by # of ACs, just most recent. Nothing wrong with ^, but sorting by rating I find makes it easier for me to target certain problem difficulties. See my CF Visualizer handle to see how 900-1300 rated problems are all ~50 ACs.
Currently I am going through 1400 rated problems, almost done. I have started to supplement with other resources, getting exposure to new topics. Nothing too intensive, but starting to get comfortable with these topics along the way: Time Complexity, Basic Data Structures, Simulation, Sorting, Complete Search, Greedy Algorithms, Two Pointer, Binary Search, Prefix Sums, Graphs/DFS/BFS, Dynamic Programming. Don't feel any rush to jump into learning these topics, just naturally start looking into a few of them when you have time. I certainly did not understand all of them even after several times reading through tutorials, but getting exposure is beneficial to set you up for success in the future, not just immediately. I used USACO Guide for the most part to learn topics, and googling whatever else did not make sense to me, which was often.
I think this method covers all of the bases well, starting from the ground up and limiting any holes in your knowledge. Also, note that practicing solving 1400 rated problems per se does not mean that your performance is ~1400. If you look at my contest history, The last two contests I solved A-D, even though 4 of those problems were rated each of 1500, 1600, 1700, and 1800. Perhaps the 1800 was flukey, but just keep in mind that trudging through low rated problems will skyrocket your performance given time.
Make sure you do contests whenever you have the time to, although doing one every once in a while is still sufficient, just to keep your contest solving skills sharp. These include debugging, time pressure, not test cases to look at, etc. It will come naturally if you participate relatively frequently.
Long post, but I was bored in school. :( Hope it helps, good luck!
thanks for taking the time to write this, I haven't programmed seriously in a long time I'll try your method. I can see what you mean by having fun , learning touch typing was horrible for the first week or so , but once I got in the groove of it, it became fun. Hopefully I can get into the groove of programming.
No problem, as long as you put in the time you will start to see results.