Roshan_Vijey's blog

By Roshan_Vijey, history, 3 weeks ago, In English

Hi everyone,

I'm currently trying to improve my competitive programming skills and would appreciate some guidance. Here's a summary of my situation:

Current Progress:

  • I solved more than 150 problems in Leetcode and very familiar with data structure and algorithms (In Leetcode Weekly contest, I can easily solve 3 problems out of 4).
  • I regularly participate in Codeforces contests.
  • Typically, I can solve the first two problems. But sometimes I also struggle with B problem (when I sees like problem was a new pattern to me).
  • But, I consistently struggle with the C problem.

My Approach:

  • During the contest, I attempt to solve the 3rd problem but often fail to come up with the optimal solution.
  • After the contest, I read the editorial to understand the correct approach.
  • I notice that the main reason I fail is because I encounter new pattern types of problems that I haven't seen before.
  • (Ex: In a question, I come up with one scenario where brute force operation takes O(n^2) but I can't come up with solution of O(n) then after reading editorial they solved it using prefix-sum. I am already familiar with prefix-sum and I also know when to use it , but I never seen a scenario like that for which I never think prefix-sum also works. This is what new pattern means to me and this what is my problem.)
  • I always remember these approach for future reference in case a similar problem appears.

Challenges:

  • Despite attending over more than 15 contests, I haven't yet encountered a C problem that I could solve using an approach I learned from a previous editorial.
  • I feel like I'm only remembering the lot of approaches for the particular pattern problem for no use.

Questions:

  • Is my current method of learning from editorials after each contest effective, or do I need to change my approach?
  • What strategies or practices can help me better recognize and solve new pattern problems during contests?
  • How can I improve my problem-solving skills to break past this plateau?
  • Vote: I like it
  • +7
  • Vote: I do not like it

»
3 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Roshan_Vijey (previous revision, new revision, compare).

»
3 weeks ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

I don't know if I am experienced enough to write this, but as you mentioned, you sometimes struggle to solve B problems. In my opinion, you should first make yourself comfortable with solving B problems. To do this, practice by solving B problems from past contests. Once you feel confident solving B problems in most live contests, you can then focus on tackling C problems in similar way. All the best :)

  • »
    »
    3 weeks ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    thanks for your advice. But I just eager to know that if I am currently going in right path or just need to make some changes.

    • »
      »
      »
      3 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Ya but you should solve much more problems on cf itself. Go for rating+200 rated problems

      • »
        »
        »
        »
        3 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Thanks for your help. I will start to solve more C problems

»
3 weeks ago, # |
Rev. 2   Vote: I like it +4 Vote: I do not like it

You solved only 7 C problems.

Leetcode and Codeforces are not the same.

Thus your 150 LC don't count in CF.

CF C and LC Hard have the same level of dificulty.

in conclusion you just need to practice more C problems

»
3 weeks ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Btw some of the C problems have 1800+ rating so you should practice problems by rating, usually what people do is (your current rating) + 200, i practice 1300-rated problems now, sometimes its a B sometimes its a C.

  • »
    »
    3 weeks ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    Thanks for your tips.

    But my problem is let's say I come up with some observation for a C problem and I know how to code that observation but my code doesn't work for the given constraint so I should optimize my code. While thinking for optimization, I have clearly no idea how to do it because I never optimized any code before in that pattern scenario.

    If you are telling that just solve more C problem you will get used to it techniques for different pattern and start to solve C problems in future. I will truly accept that as answer and start to solve more C problem instead of worrying about myself.

    • »
      »
      »
      3 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      This is the exact situation I face in Div.2 C problems.

    • »
      »
      »
      3 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      ABC problems are about finding a trick most of the time and i don't think you are used to that yet, optimizing sounds more like Leetcode-ish where you are forced to use a well-known algorithm that runs in O(n), O(nlogn) or something, but in CodeForces is more about observations if you think you need to optimize your solution is probably because you missed the key observation.

      As i said its better if you solve problems according to your current rating + (200 or 300), some C are 1800-rated so it makes no sense to solve all C you encounter, you can use https://cftracker.netlify.app/contests to find problems so that in CodeForces you can hide the tags.

      Obviously if you practice you will get used to the patterns but also practice how to come up with solutions since CF relies a lot in observation and tricks.

»
3 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't know if this strategy is effective or not, but I did the same thing. Just solve more problems of difficulty 1200-1600.