Hello everyone, I'm Cuber-26.
Two years ago I don't even know how to write a program in programming language like C++. I started to learn programming and some very basic algorithms when I was a Freshman. Now it has been a year since I first come to Codeforces, currently my contest rating is $$$1815$$$.
Since I'm actually a student learning Mathematics, the part I do the best is Number Theory. I'm also good at solving some constructive problems and math problems. Problems like interactive or bitmask are OK for me too.
However some parts are my shortcomings:
Data Structures: Now I only learned BIT, Segment Tree, DSU, Trie, Sparse Table, and could only accomplish some simple applications.
Graphs(especially problems related to paths): I've never finished any problem about shortest paths and weighted graphs. I've learned Dijkstra and Floyd in Data Structure Course. However I had never written them into code, and I've completely forget them after final exams last year:( There are so much knowledge, definitions and skills in Graph, and I don't know where to start.
Combinatorics: Most of the time I cannot come up with good ideas in combinatorics or counting problems. My thoughts of classifying different conditions are either too complex or messy, makes me feel hard to gather the answers up.
Strings: For example, some problems about counting substrings or subsequences, string hashings.
Searching: This should be the worst part of me. Firstly I'm not skilled at writing DFS/BFS in matrices or graphs, and also I cannot make up my mind of how to make a correct searching. I usually encounter situations which my code doesn't output results in my expectations. Weak abilities in implementations troubles me a lot. (My ability in searching maybe only reached $$$1300$$$ lol)
These days I'm trying learning new things by randomly picking up problems with difficulty in $$$[1800, 2200]$$$. I tell myself to insist thinking as much as possible. I only look at the editorial when my thoughts can't go forward anymore, and I never directly copy codes from solutions or other submissions.
Sometimes the process goes smoothly. For example I solved 2136F1 - From the Unknown (Easy Version) and 2097C - Bermuda Triangle by myself during the contest time and gave me lots of contest ratings. (Here are my submissions: 336010636, 317323768)
However most of the time, my attempt towards a problem ends up with seeing editorial, even if I would spend hours on thinking before looking for solutions. It's hard for me to completely solve a problem independently. Luckily turning solutions from editorial into my own AC code also let me learned a lot. For example, yesterday I solved 2136E - By the Assignment and 2093G - Shorten the Array with the help of editorial. Writing codes is also hard, so they spent me 6 hours in total. (Here are my submissions: 336091153, 336169572) I learned tarjan algorithms for SCC, 2-coloring for judging whether rings with odd length exist, and 01-trie for dealing with xor pairs. These were things I never learned before.
I'm concerning about whether this method of learning is really efficient or not. (Because most of the problems are beyond my ability of independent solving) And I don't know what are more things I should learn. There are still a quantity of knowledge I don't know, and I wonder where should I focus on and start with.
My goal is to reach Candidate Master ($$$1900$$$ Contest Rating) in one or two months. I'm willing to pay time on learning. Could anyone give me some advice please?







