Could Someone Give me Advice on Improving Algorithm Skills for Competitive Programming?

Hello there,

I am diving deep into the world of competitive programming; and I am finding it both challenging and exciting. Although; I have hit a bit of a roadblock and could use some advice from this knowledgeable community.

I have been practicing regularly on various platforms; tackling problems of different difficulty levels; and participating in contests.

While I have a decent understanding of basic algorithms and data structures; I find myself struggling with more advanced concepts and their implementations. Specifically; dynamic programming; graph algorithms; and computational geometry are areas where I often get stuck.

Could you recommend any books; online courses; or tutorials that provide a clear and in-depth explanation of advanced algorithms? I am looking for resources that are both theoretical and practical; with plenty of examples and exercises.

Which platforms or problem sets would you suggest for practicing advanced algorithmic problems? I am particularly interested in problems that gradually increase in difficulty and help build a strong foundation.

What study techniques or strategies have you found most effective for mastering complex algorithms? Do you have any tips on how to break down problems and approach them systematically? :thinking:

Are there any communities or forums where I can share my code and get constructive feedback? I believe that getting insights from more experienced programmers could significantly speed up my learning process.

Also, I have gone through this post: https://algora.petlja.org/t/raspodela-nagrada-na-republickom-takmicenju-za-osnovce-tableau/ which definitely helped me out a lot.

Lastly; how do you balance practice with learning new concepts? I often find myself spending too much time on one or the other; and I am struggling to find a good balance.

Thank you in advance for your help and assistance. :innocent:

1 Like

Hi Sam,

Sorry for the late response and welcome to our forum.

First and foremost, I’m glad that you decided to join our little community here, although sadly I’m not sure how many resources in English you’ll find regarding competitions on our site. We’ve always been focused on supporting local competitors and competitions. Do you speak Serbian? If so you might have better luck with discussions and our resources in Serbian :slight_smile:
I’m assuming you don’t and basing the rest of the post on that assumption.

Take any advice I give you with a pinch of salt, as I am not and never have been a competitor.

As for most things, Coursera and Khan academy have great resources in English. You might have luck finding what you need there. I also know many of our younger associates used Codeforces for practice while they were competing.

Regarding the post you linked, I’m not sure what seemed to help you there in regards to advanced algorithms. Did you maybe link the wrong post?

I’m hoping someone more experienced with competitions and the necessary preparation jumps in and keeps the discussion going. It’s an interesting topic, and I’m sorry I’m not much help :slight_smile:

Hello samzyan,

I am really happy that you decided to join Algora! Quick bio about myself, I graduated from Berlin university of cybersecurity and do competitive programming as a hobby, but I am pretty good and 85% percent of the time, I manage to solve 3000 rated problems on codeforces ( which is really hard ).

So here are some tips on how to improve:

  • Learn these algorithms if you are aiming for codeforces 2500 rating:
    Data structures
    • Segment trees, fenwick trees, sparse table, treap, splay, tree decompositions, square root decomposition, static top trees.
      Greedy ideas:
    • Wishful thinking, monovariants and invariants
      Dynamic programming:
      The list is really large, so I advise you to check out usaco.guide website.
      Apart from that, learn fft, graph terminology, and tree related stuff ( such as euler tour tree, lca, etc. )

If you need any help about a problem, or you want me to explain some algorithm, hit me here with message, or DM user bpptidp.

1 Like

Just listen to good music, such as Choda19a, or Baka Prase. You will se results almost instantly, trust me. Also practise from codeforces, codechef, atcoder, topcoder, usaco.guide, spoj, or just practice from past Olympiads you can mostly find on oj.uz. I also recommend reading the competitive programmer’s handbook by Antti Laaksonen (https://cses.fi/book/book.pdf), and practising from his problemset (CSES - CSES Problem Set - Tasks).
Also, a great website for learning algos is https://cp-algorithms.com

And lastly, I highly recommend listening to the advice of my trans boyfriend, hindenburg