MohamedHassan499's blog

By MohamedHassan499, history, 5 years ago, In English

I has been 6 months since I start to solve problems from any online judge (Codeforces was the first one by the way) but since then, I barely notice a difference in my problem solving skills from now and 6 months ago even I had solve +100 problem and every time I register in a contest (div 2 or 3), my rate always decreases by -90 or more, and even If I managed to solve a problem It would be an A only.

So what should I do to improve my self even more? or begin a professional problem-solver requires lot of years practising? I'll be very grateful If you recommeded a few solutions based on your experience ^^

Thanks in advance.

| Write comment?
»
5 years ago, # |
  Vote: I like it +10 Vote: I do not like it

How do you decide which problems to solve when practicing?

After a contest, do you try to "upsolve" the next 1-2 problems that you didn't solve during the contest? That's something I should get in the habit of doing more -- I think I fall into the trap of sometimes just doing easy problems during practice, or of being "done" with a contest or reading the editorial/solutions right after the contest timer expires.

Other than doing problems, do you do anything else to try to improve (like read tutorials, learn standard algorithms/techniques, read other people's submissions, etc)?

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    A friend of mine send me a sheet full of problems from codeforces sorted from A to D (from various divisions) and I started from 4 months to solve from it starting from A section but most of these problems I tried so hard to solve it on my own (I can stuck for a one like 2-3 days and not all of them I can solve it on my own in the end at that point) and like you mentioned I began to read the solutions of these kind of problems but many of these codes I don't understand how did they approach to the solution and I don't understand his code precisely.

    • Yes I've started to read some algos like binary search and both DFS and BFS, the easy version of them I can solve them, but when the difficulty of the problem raises and even If It depends on these topics I get stuck and I don't know that else shall I do.

    Is there something I have missed to make me stuck like that?

    here's the link of the sheet I've mentioned above incase you're curious about it: https://docs.google.com/spreadsheets/d/1iJZWP2nS_OB3kCTjq8L6TrJJ4o-5lhxDOyTaocSYc-k/edit#gid=123190759

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Maybe you don't need to know dfs/bfs to solve div.2 A-C

      You should only practise and think quicker.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        dfs/bfs is useful in OI contests:)

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Of course I know.

          But do you ever seen a D2A/B/C using dfs?

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            OI refers to one of Chinese Informatics Contest kinds in my opinion:(

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Only practising and thinking quicker makes sense for me, but how should I reach that level?

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Choose some classic problems

          Even if you solved the problem,think more about it.Can I solve it in a faster solution?/ Can I optimize it?

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            I think you're right, but what about the problems with number theory and math tags? I'm terrible as hell with these kind of problems and I don't know what to do with this topic (Specially that this ain't a algorithm like binary search)

            Any advice?

            • »
              »
              »
              »
              »
              »
              »
              5 years ago, # ^ |
              Rev. 4   Vote: I like it 0 Vote: I do not like it
              Math problems?

              NO,I CAN'T SOLVE THEM EITHER

              For solving first two problems in div.2, what you need is to learn how to find the regular pattern.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I have the same color as you. I'm not sure how long am I involved in Competitive Programming, since there's a small time gap in which I never touched programming and focused on school maths.

I can only confidently solve problems that are 1000 and below. Between 1000 and 1300, either it is a greedy approach I never thought of, a simple dp or stuff like that, I just can't solve them.

The only thing I'm doing is do more problems and learn more algorithms and data structures. Beside Codeforces, you can try AtCoder, SPOJ, uva etc. Hackerrank and hackerearth is a good place for learning some useful algs and ds. Try to find some nice books to look at. An online PDF version of the book is more than enough.

Well if you're interested in algorithms you can read so called "Bible", the CLRS Textbook. Notice that a lot of contents in the book can be skipped for the sake of competitive programming.

»
5 years ago, # |
  Vote: I like it +8 Vote: I do not like it
Spoiler
»
5 years ago, # |
  Vote: I like it +4 Vote: I do not like it

Since no one mentioned this, doing virtual contests works too.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

8 months since I started competing in codeforces, and it seems I have some ideas to increase your rating at least to green.

You must solve problems at least 1 hour every day and solve them in this way:

Let's take some kind of problem div 2A, think about this problem for a maximum of 10 minutes if you cannot solve this problem within 10 minutes, look into the editorial and try to solve it without looking at the code of other participants, and if you are solving div 2B after 20 minutes of thought you cannot solve the problem, then you have to look at the editorial, sitting for 2 — 3 hours thinking about a task is a very bad idea, especially if you are solving div2 A-B, it just slows your improvement.

To solve the first two problems of the div2 contest, you basically do not need to know any algorithms, mainly implementation, greedy, bruteforce. Solve as many very simple tasks as possible, this will help you to think about. If number theory then there are very well-known formulas for finding all divisors of a number or for finding prime factors. For mathematics, you can read about gcd, lcm and the usual formulas of mathematics and trigonometry.

Once a week you can do virtual contests, it helps to concentrate during the contest solving problems, you can use vjudge for this. You can collect 4-6 tasks of div2 A-B and solve them within one hour, use all your strength, you should not think about the problem for more than 30 minutes since it is very important to solve problems as quickly as possible in competitions

If you want to improve your rating bigger than green than read about simple dynamic programming, bfs, dfs, binary search, stack, queues.

Good luck in solving problems

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I stuck for a long time by just study algorithms and do not practise much enough also spend so much time and on a problem. Maybe i’m so hard to myself and it really a bad manner. You can get more value by reading editorial and implement them than trying to spend so much time and judge yourself stupid like the way i did. Keep practising and never give up, sometimes you feel frustrated but these days help you find out the best method for you.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I hear this phrase somewhere

      " The one who passed 1 algorithm 10,000 times is better than the one who knows 10,000 algorithm and did not pass any "

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

THIS blog may be helpful.

»
5 years ago, # |
  Vote: I like it +3 Vote: I do not like it

in my opinion you have to learn something first and then search the problems with the same tag and then solve as many problems as you can like this: first start with solving problems with rate 1000 (about 5 problems) and then increase rate of the problems step by step and go forward and for being great in some topics you have to work hard and i believe that rate doesnt matter so dont be worry about your rate and i have a blog about the what topic is good for start and i offer you to read the comments :)