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.

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)?

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.

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

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

You should only practise and think quicker.

dfs/bfs is useful in OI contests:)

Of course I know.

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

Twice actually. There's a problem called "Rumor" Div2 C which's solved using DFS

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

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

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?

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?

NO,I CAN'T SOLVE THEM EITHERFor solving first two problems in div.2, what you need is to learn how to find the regular pattern.

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.

What about the problems depending on implementations, math and number theory? I face alot of troubles against most of them

Solve div3 A

Solving it is an easy task for me at the very least :D I'm talking about an intermediate problems (let's say starting from Div3 C or div2 B)

Any advices?

Spoilerlearn math

Click for fun! There is no hate, also solve easier problems, up to your raiting+200/300

Thanks Nemanja, I appreciate your effort :D

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

Thanks, really appreciate your words :)

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

Thank you so much, I really appreciate these precious words! :)

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.

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"Makes sense for me actually!

To be honest, current I'm the exact as you In the past, but appreciate for those words Hd7 :)

THIS blog may be helpful.

Thanks buddy, appreciate your help so much! :)

You can try read the book "Competitive Programming 3" by Steven Halim

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 :)