I'm Geothermal. AMA!

Revision en3, by Geothermal, 2023-07-31 03:19:46

After reaching 3200 in yesterday's contest, now feels like as good a time as any to hop on this bandwagon. Feel free to ask questions in the comments and I'll respond to as many as I can.

A few sidenotes:

Thoughts on Practicing

In my streams, by far the most common questions I receive are variants of "how can I improve at competitive programming?" I'm happy to offer advice if people have specific questions about training related to their particular circumstances, but I wanted to write down some general thoughts so that I can redirect people who ask about general practice strategies (in this AMA or in my future streams) to this post.

I endorse most of the advice given at this link. In short, I recommend solving problems around or slightly above your skill level (I like to go to clist.by and choose Codeforces problems with luck between around 25% and 75%). If you run out of ideas and get totally stuck, you can look at the editorial--usually I try to just read the first part I haven't figured out already and then solve the rest of the problem on my own. (I don't have a specific timeframe for looking at the editorial; usually I give up whenever I feel like I haven't made any progress for a while and am unlikely to come up with ideas in the future, or when I'm bored of the problem.) I almost always implement solutions to the problems I attempt to make sure I haven't missed anything. (I think this is especially important after reading editorials in order to confirm that I really understood the solution.)

If the solution to a problem relies on an algorithm you haven't seen before, I suggest reading about it in e.g. CPH, CP4, cp-algorithms, or USACO Guide. Afterwards, solve a few related problems to make sure you've picked up the general idea. I don't recommend spending much time learning algorithms before related problems have come up in your training, since this strategy risks spending too much time on ideas that aren't relevant to the problems you need to solve in-contest. (One exception is that if you're just getting started, you should learn the basics of programming--in C++, this includes things like conditionals, loops, functions, etc, as well as the STL data structures, but not memory management, advanced topics related to e.g. pointers, or any object-oriented programming--and big-O complexity before doing anything else because these ideas are foundational to almost every problem you'll solve.)

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en7 English Geothermal 2023-08-18 02:06:19 484
en6 English Geothermal 2023-08-01 01:38:59 637
en5 English Geothermal 2023-07-31 03:20:39 271
en4 English Geothermal 2023-07-31 03:19:53 11 Tiny change: ' solve.)\n\n[likes:1]' -> ' solve.)\n'
en3 English Geothermal 2023-07-31 03:19:46 13 Tiny change: 'll solve.)' -> 'll solve.)\n\n[likes:1]'
en2 English Geothermal 2023-07-31 03:18:50 285 Tiny change: 'ick here: (likes:1)' -> 'ick here: [likes:1]'
en1 English Geothermal 2023-07-31 03:18:05 2947 Initial revision (published)