Блог пользователя PaciukZvichainyi

Автор PaciukZvichainyi, 3 месяца назад, По-английски

Alternative name: "Road to Master when you don't have time".
Episode 1: August 2024

Preface

I used to be a competitive programmer since ~8th grade. When covid started and we all had more time to solve problems, I actually began to see some progress in cp. I have two bronzes in the UOI (1 place to silver x2, sad). That's not too bad, and I probably don't regret it (though if I could go back, I'd definitely change my attitude).

I always had one milestone: to become a Master (yellow) on Codeforces. As you can see, my max rating is 3 points below Master. Pretty sad. I need to fix that. But a few things happened compared to 2020:

  1. 4 years have passed.
  2. I'm in my last year of university.
  3. I have a swe job.

So, I definitely have much less free time than I did in 2020. This is probably the last period in my life when I have at least some time to improve in cp, and I need to use it mindfully and close all my competitive programming goals (that are still achievable). But it's not all bad; my general intelligence is higher than ever, and my mindset has changed a lot since school, so I believe I can achieve Master in this condition more easily than 4 years ago.

I decided to sacrifice some things to have at least some time. I moved to the village during this grind period, I try not to watch YouTube or surf social media (watch f1 is allowed), I stopped going to the gym, and my city hobbies are temporarily on hold. After all these adjustments, I can say that I spend even more time on competitive programming than I did when I was in school. I currently spend about 3 hours on weekdays and 6 hours on weekends, so that's about 25-30 hours a week (not bad).

But why am I actually wanted to grind/solve again? It’s because Codeforces and other online contest platforms give you some pretty unique emotions that I, personally, don't experience much as an adult. The emotion of competing with other live people is something special. Multiplayer games offer something similar, but to a much lesser extent. And with a side effect — you end up feeling like you’re wasting your life. It’s really an amazing concept: you spend some time progressing (usually about a week), then test yourself in a competition, with the chance to perform better than last time and feel great about it. But to have more positive emotions you of course need to progress in between otherwise it doesn't make much sense. But to have more positive emotions, of course, you need to progress between competitions, otherwise it doesn't make much sense to always lose.

Rust

Few notes about the language I picked. I used to code in C++ back in the day, but I actually returned to cp by accident. I just wanted to do something in Rust because I hadn't used it for a few months. So I decided to solve a few easy problems on codeforces. I liked it immediately and now having so much fun writing my own template.

Goals

  • [ ] Master (It is desirable to write a few more cfs after becoming a master, because stoping writing immediately is a loser mentality).
  • [ ] Full live Div2 contest.
  • [ ] Better then top33 (personal best) in a contest.
  • [ ] Solve 2500R during contest.
  • [ ] Solve 3000R problem.

I chose yellow over red for several reasons. The main thing: to become red, you need to sell your soul to the devil, forget about writing a thesis, quit your job and practice 5 times more. But we'll see how it goes. The max time I allocate for this is the end of this year. But I expect to achieve master already in October. After this I will be able to fully immerse myself in simracing without any regrets (I hope so).

Practice results

During August, I had about 23 days when I solved some problems. I'm pretty impressed with myself because I can now solve almost any problem if I spend a few hours on it and it doesn't require aho/hld. I remember that four years ago, I would read the editorial after 30 minutes and "copy-paste" the solution without deep understanding. However, my speed has definitely decreased. Like I have this condition: I can solve harder problems in few hours, but I'm slower on easier problems.

I've also changed my strategy a little. Now, I almost exclusively try to solve problems myself without using the editorial. If I can't solve it but understand that with a bit more knowledge in a topic I could, then I schedule this task for two weeks later. I only read the editorial after solving the problem myself because, in my experience, the editorial is hard to understand even if you've just solved the problem (idk why this happens). To workaround this, I solve the problem first :)

A few mini achievements:

  1. Solved 2800 w/o Editorial (but knew I need to use CRT).
  2. Solved 2900 w/o Editorial.
  3. New topics: CRT, tree diameter.
  4. Remembered many algs and techniques.
  5. Fully upsolved 3 Div2 contests. In comparison I only had 3 in all my previous years.

Solved problems:

R 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 Total
Count 5 5 3 4 5 1 5 0 2 1 0 1 30

Contest results

Unfortunately, live contests didn't go as well as my problem solving when I'm not hurry up. I knew I could perform well, I believed in myself. But something didn't go as I expected.

CF Standings Pos Delta Solved Few notes
Codeforces Round 963 (Div. 2) link 1517 +14 3/7 First cf after two years. Not bad start. Was able to solve F2 (2800) after contest. Realized that my speed is not that bad.
Educational Codeforces Round 169 link 8954 -119 3/7 +5 attempts. C was too hard for me (1100). I missed one edge case in the implementation, but decided to focus all my time on it. I read E, but I forgot how Sprague-Grundy works. A quick read on cp-algo didn't help because I skipped the part about mex (read only xor). As a result, I couldn't understand how the first pretest even worked. I upsolved up to Problem F.
Codeforces Round 967 (Div. 2) link 442 +122 4/6 First good results. Big delta because I was almost cyan before the contenst. I even knew how to solve E1, but didn't have enough time. Solved E2 after contest (2900).
Codeforces Round 968 (Div. 2) link 825 +46 4/8 Even though I had +delta, but I hated this contest. There were so much problems and you needed to decide to solve D2 or E1, etc. I am not satisfied with myself, because I have fcked up again with the implementation of D2. After this contest, I started to get a little frustrated that I couldn't show my full potential. But + is +.
Codeforces Round 969 (Div. 2) link 7497 -135 2/6 Haaha, I started to think about quiting cp again. Even though I spent 3 attempts to solve A, I solved B pretty fast and had plan to just solve more than others. But then this C come to my eyes. I spent 1 hours without almost ideas. So following tourist's logic I decided to skip D and solve E. I had correct idea but (again) during the contest I wasn't able to implement it correctly. The next day, I woke up and upsolved the full contest without any problems and editorial, I spent maybe 3-4 hours. I'm glad my thoughts of giving up are gone because that would mean I'm a clown.
Result link Avg. 3847 -72 Avg. 3.2/6.8 Max solved in live: 1900R x2. Yeah, bad start. But the less rating you have, the more rating you'll gain next time, stonks.

Conclusion

I spent a lot of time grinding cp in August. But it's better than watching videos all day. Even though my live contests aren't going well right now, I believe that contest performance improves after 2-3 months (that's what happened in 2020). "You just wait, sunshine, you just wait". I'm actually starting to see some changes in my mindset too. At work, I’ve begun thinking more about my solutions and what the root cause might be, instead of trying everything immediately. This has had good consequences. As I expected, one month isn't enough to become a master, but I'm surprised at how good I've become at solving problems right away (though it takes more time than the contest duration).

I will continue to practice in the same way: simply solve hard problems that I once could not do, or upsolve my live contests. Maybe I'll write a few virtual ones.

So my goal for the next month is to become a CM and start solving that one extra problem that I couldn't implement right when competing live during this month. See you in a month when I'm purple.

Keep pushing.

  • Проголосовать: нравится
  • +34
  • Проголосовать: не нравится

»
2 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I hope I won't leave after this post. That would be so funny.

»
2 месяца назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

This looks really interesting. I read through some of your contest notes, and your positive attitude is quite admirable, despite undesirable performances. Good luck with your goals man.

»
2 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Good luck man! I hear you about the online games part. I wouldn't say it feels like I'm wasting my life, it just feels like they require too much energy these days. Also, Rust is pretty cool.

But also, perhaps you don't need my advice, but I want to add that it might not be the best idea to stop working out. It is an easy way to fall into an avoidable depression.