Every Technique and Algorithm I Used to Become Grandmaster

Revision en8, by Noble_Mushtak, 2023-01-30 06:58:02

Hi everyone, I became grandmaster today so I decided to go down memory lane and review every problem I have ever done in a CodeForces contest to look back and see every technique and algorithm I had to use to become a grandmaster. I am not sure how useful this is, I mostly think it's fun to look at all the old solutions I wrote and how different it was from how I write code now. I think the main takeaway is that, as many people have said before, you don't need to know or memorize a bunch of advanced algorithms to become grandmaster. As you will see, there are many popular algorithms that I have never needed in a CodeForces contest despite being a grandmaster. There are also many problems where I just say I use "ad hoc reasoning," meaning there's not a standard technique I used to solve the problem and you just need to make some clever mathematical observations to solve the problem.

This isn't to say that learning algorithms is bad—I love reading cp-algorithms.com and learning new algorithms—but for the purpose of getting better at competitive programming, at least on CodeForces, practicing consistently and getting better and better at your general problem-solving abilities matters much more.

CodeForces Round #362 (Div. 2): Rating went from 1500 to 1504 (back then, default rating was 1500 instead of 0)

Codeforces Round #363 (Div. 2): Rating went from 1504 to 1536 (+36)

  • Problem A: Brute force
  • Problem B: Brute force
  • Problem C: Ad hoc reasoning and basic bitmasks (there is a dynamic programming solution, but that's not how I solved it)

Codeforces Round #553 (Div. 2): Rating went from 1540 to 1566 (+26)

Codeforces Round #570 (Div. 3): Rating went from 1566 to 1732 (+166)

Educational CodeForces Round 68: Rating went from 1732 to 1766 (+44)

CodeForces Global Round 4: Rating went from 1776 to 1807 (+31)

Educational Codeforces Round 74: Rating went from 1807 to 1920 (+113)

Codeforces Round #600 (Div. 2): Rating went from 1920 to 1877 (-43)

  • Problem A: Ad hoc reasoning and math
  • Problem C: Sorting, prefix sums, and dynamic programming
  • Problem D: Depth-first search and connected components

Codeforces Round #601 (Div. 2): Rating went from 1877 to 2005 (+128)

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en13 English Noble_Mushtak 2023-01-30 08:29:30 731 Tiny change: 's\n- Fast fourier tra' -> 's\n- Fast Fourier tra' (published)
en12 English Noble_Mushtak 2023-01-30 08:14:01 1453
en11 English Noble_Mushtak 2023-01-30 08:06:03 3071
en10 English Noble_Mushtak 2023-01-30 07:39:04 828
en9 English Noble_Mushtak 2023-01-30 07:28:17 2247
en8 English Noble_Mushtak 2023-01-30 06:58:02 627
en7 English Noble_Mushtak 2023-01-30 06:47:44 447
en6 English Noble_Mushtak 2023-01-30 06:43:04 495 Tiny change: ' [Problem B](https://' -> ' [Problem C](https://'
en5 English Noble_Mushtak 2023-01-30 06:28:19 797
en4 English Noble_Mushtak 2023-01-30 06:20:07 554
en3 English Noble_Mushtak 2023-01-30 06:10:43 3013 Tiny change: 'Div. 2):\n- [Probl' -> 'Div. 2):\n\n- [Probl'
en2 English Noble_Mushtak 2023-01-30 05:26:48 8
en1 English Noble_Mushtak 2023-01-30 05:26:35 976 Initial revision (saved to drafts)