Today I solved this 1600-rated problem.
I tried this problem (for about 2h+) around one month ago and I wasn't able to solve it then. So I left it for later, without seeing the editorial.
Today I tried it again in two sittings and devoted 1h + 2h time to it. I was stuck multiple times, but I just wanted to solve it on my own, really didn't want to give up.
I finally managed to solve it on my own without seeing the editorial.
Though it was very satisfying to solve it, I am still confused about whether I wasted too much time(overall 5h+) on this problem.
This happens to me a lot. I spend 1.5h+ on average on a problem and it's very common for me to spend around 5-6h+ on some problems.
Every time I get stuck on a solvable problem and I have the option to jump to the editorial, I am afraid.
I fear that I will miss the important skill development that I can get if I manage to solve this problem on my own.
I feel that coming up with the solution on your own is far greater that knowing the solution.
I do enjoy solving problems a lot, and I really love the feeling when I solve harder problems on my own. But sometimes, the amount of time I spend makes me wonder if I am doing the right thing.
Questions
(1) Should I have given up earlier and saved my time? I would have been able to solve more problems.
(2) Sometimes I end up spending hours and still don't get to the solution. Is that time considered almost wasted?
(3) Consider, Person 1 — Spent 10 hours and solved 2 problems of X difficulty on his own, Person 2 — Spent 10 hours and solved 6 problems of X difficulty (5 on his own, and 1 by seeing the editorial). Consider both person have the same skill level at this point. Which person is doing better?
(4) Will I grow too slowly if I keep devoting too much time to the problems?
(5) My goal is to touch 1900+ Rating by end of April 2023 (I have a peak rating 1841). If I keep following this strategy will I be able to achieve my goal?
(6) What is the maximum time you have spent on a solvable problem? (Let's say a solvable problem is defined as a problem of rating within 200 rating range of your rating at the time of attempting the problem)?
(7) Any high rated user(CM+) who follows similiar strategy?
I keep track of each problem I am not able to solve on my own and this is the list so far (19 Problems out of total 453 solved)
(1514C, 1600, Product 1 Modulo N, Wrote a garbage solution by gussing)
(1786B,, Cake Assembly Line, From someone else you realize — Cakes cant be touching each other)
(1758B, 900, XOR = Average, took hint(1,3) from blog post comments)
(1762D, 2100, GCD Queries, Devoted 6-7h+ but still couldn't)
(1526C2, 1600, Potions — Hard Version, Took hint)
(1748D, 2100, ConstructOR)
(1749D, 1900, Counting Arrays, Read the problem wrong)
(1744E2, 1900, Divisible Numbers Hard Version)
(1720D1, 1800, XOR Subsequences (Easy Version))
(1712D, 2000, Empty Graph)
(1709C, 1800, Recover an RBS)
(1696D, 1900, Permutation Graph)
(1665D, 2000, GCD Guess)
(1665C, 1600, Tree Infection)
(1633D, 1600, Make Them Equal)
(1630B, 1800, Range and Partition, Didn't thought of binary search)
(1603B, 1600, Moderate Modular Mode, Could come to the solution)
(1550C, 1700, Manhattan Subarrays)
(1543C, 1900, Need for Pink Slips, Couldnt debug floating point errors)
if you are spending hours of time on a single problem it doesnt mean that you are wasting your time you are also learning something new.
I completely understand that. But consider the scenario 2, where I only spent 1 hour(instead of 5 hours) and then jump to the editorial.
I would still learn something. Probably I would have same amount of learning/skill development, but I would save 4 hours
Yeah right said. I spend 10 min on a problem and jump to editorial and save 4 hours 50 min.:)
i'm not a right person to answer this question. but in scenerio 3 in my opinion person 1 is better because he solved the problem on his own. if i;m am unable to solve a particular problem i gave maximium of 1-2 hours then i will move on to editorial
Person 2 is better because he solve more problems on his own. Sometimes when you can't solve it for too long you should give it up. (but not reading the tutorial)
Alternatively, do read the tutorial, but after that think about how to come up with the solution and why you didn't.
When you solve a problem, you not only come up with the correct solution, but also come up with 100s of incorrect solutions, which can help in solving other problems faster.
But yeah, 5 hours on a 1600 problem is probably a but too much :D
If you are getting ideas , then dont look at editorial .
Unpopular opinion: trying a "solvable" problem (within 200 rating range) for more than 2 hours is a waste of time.
Of course, if it's a much harder problem, you may want to spend more time.
I think this is much more about the type of training you want to do than anything else.
Taking a long time on problems makes you a better problem solver long term, while trying to solve it in a manageable time makes you faster so you can apply those problem-solving skills on contest.
Of course both types of training also make you a little bit better at both, but you need to think what is the most lacking aspect for you at the moment
us bro us
Not necessarily. Yes, 5 hours is a lot to spend on a single problem, but it does not matter if you are able to think of stuff to do in order to solve it. Like, there is a difference between looking at the problem clueless and attempting many wrong solutions. As some people already said, in the process of coming up with correct solution you also come up with many wrong solutions, but these solutions can be used for other problems.
But on the other hand, I get that you might want to try and solve more problems. Even though from personal experience, quality is much more important than quantity. Now, if you are dead stuck with no ideas, then I do recommend getting a hint as the problem might require some knowledge that you do not currently have.
Now to answer the questions:
As long as you are making some sort of progress on the problem, I think that you should not read the editorial or get hints.
No. You were thinking about the problem and tried various wrong solutions. You probably even had moments such as "That would work if it was for..." which can greatly help you when you encounter similar problems in the future.
Depends. Such difference in performance might be due to one person just getting problems that they are more familiar with and therefore solving more. It could also be that they decided to not put much effort into the problem they couldn't solve. On the other hand, the first person got hit with some pretty hard problems and will learn from solving them. Also, the level is probably also important. Just see what way of practice is the most fun for you.
Doesn't have to be the case.
Honestly, I do not think that how good you will be should be a concern for you. If your current practice strategy gives good results and you enjoy it, keep it. If it does not, change it.
Tough question as I do not only think about problems while sitting in front of the computer. I find myself thinking about them just when changing classrooms sometimes when being in the bathroom when struggling to fall asleep for hours. But in total, there were surely some problems on which I spent 5 hours or more, maybe even 10. But I do sometimes ask my friends for a hint or look up the editorial. I find asking for hints to be more useful as editorials sometimes give away too much.
If you are stuck on a problem for a long time, the chance is high that you are approaching it in the wrong way. Think about different approaches to it. Maybe you should go from the back to the front, list through techniques you know to try and find something you didn't think about. Try and simplify the problem. Maybe just walking outside, or moving to another problem might refresh your mind with new ideas. (It is not uncommon for me to come up with a solution to one problem while thinking of another) But if you are stuck for very long, sure, look up the editorial or ask for a hint in some competitive programming community. (I discourage from using CF blog for asking for hints, maybe join a discord server where they have problem help section)
All in all, try different strategies and find the one that is both effective and fun for you. Because the best practice strategy is the one that brings you the most joy. Also, do not worry about rating, it will come naturally with practice.
[deleted]
Who writes that big of a blog to ask some trivial questions? Dude, no one will bother to read your entire story.
ratings_dont_matter your opinions_dont_matter
yellow_13, you wrote a recent blog on lines of learning and problem solving abilities. What are your views ?
-> Do you think that solving problems on your own develops the creativity skill more than the analogy skill and its opposite for problems you solve by looking at editorial ?
You do ask some very interesting questions in this blog. Firstly, to answer your question, I think that solving a problem on your own develops your creativity significantly, because when you're taking time to come up with a solution, you stumble upon a lot of wrong ideas, which might seem useless at the moment but may be of some use at some later point. Sometimes though it's just not in your capacity to solve a problem yourself, so you have to end up reading editorials, I feel that goes more towards improving the analogy part of your brain, as you're registering a solution in your memory and the next time you see something similar you'll immediately remember this. There is absolutely nothing wrong with this as well, but I feel one should try their best to come up with the solution themselves as much as possible and read the editorial only when they're completely stuck.
Now, to answer the questions you've presented in the blog:
I don't think you should be giving up early, you might feel like you took too much time, but the thoughts that went through your brain during that time are precious, it might not reflect immediately, but at some point or the other it may help you. Only give up when you completely run out of ideas and are not making any further progress, I think you can assess that well enough, until that point, I think you should keep going
Won't say it's time wasted, you must've tried quite a lot of ideas in that time, and that's good. There is a point until which thinking about the problem is quite productive, once you cross that point, the productivity may decrease, so at that point maybe you can start read the editorial line by line till the first new idea that you encounter.
There's no way to tell which person is doing better. How two different people react to a given problem is a very subjective thing, and you shouldn't be reading into this a lot. I've been down that line, trust me, there's no point worrying about this. People's minds work very differently so it doesn't make sense to compare.
As I said before, I don't think this will hinder your growth in any way, as long as you're making even a little progress, I think you should keep trying. The growth will come by itself if you follow this.
There have been so many times when I set a goal like this, what used to happen was as the date came closer I used to come under a lot of pressure to fulfill the goal and that used to make my performances very bad. Its good if it motivates you but just be aware of the fact that imposing such a deadline might start becoming a burden, at least that's what happened in my case, so at that point I stopped keeping deadlines, and just kept practicing.
I've ended up spending a lot of time on problems quite often. I generally don't think about a problem for long hours at a stretch, but I think for a while, take a little break, and then I come back to it again. I've done this process for multiple days for a lot of problems.
Just keep trying different things, you'll find what works right for you. I really liked NemanjaSo2005's comment. They've made a lot of valid points. Also, I agree with satyam343's comment. If you did C2 without C1 then it's actually pretty difficult to come up with the solution, so don't fret too much about it. Good luck!
Hi. I also tend to spend a long time on problems and not read editorials, so I'd like to give my 2 cents. I think it's hard to say what you 'should' and 'shouldn't' do for practice, mainly because everyone practices differently. Personally, I start to dislike competitive programming if I read the editorial (I'm not sure, maybe my ego just can't handle the acceptance of not being smart enough to solve a problem on my own), so I don't. Even if I can't solve the problem, like you, I will just return to it in the future.
Now, I'm pretty sure most other people don't do this. And if you are purely looking for knowledge gained, then maybe it is not a good idea. Rarely will you get the chance to spend 3-5 hours in contest just for one problem (pretty much never in codeforces), and reading the editorial does teach you things. But obviously, any amount of practice is useless if you are not having fun. Maybe you can try to spend less time on problems, and see how it goes. Then you can decide for yourself which is more fun.
Yes, (at least from personal experience), you will grow more slowly. But you will grow. The one benefit of not reading editorials (outside of preference) would be that it should force you to build your problem solving by yourself. Of course it will be slower than other methods. Personally, I don't have a problem with this; I am not sure about your situation, but I happen to be a high school sophomore with too much time on his hands. At the very least, I think you will definitely get CM, regardless of how you continue to practice, so I'd like to reiterate, just go with what you enjoy more :) — you are definitely good enough.
And just for fun, I think the maximum time I have ever spent on one problem is like 5 hours in one sitting. In multiple, maybe 6-7 hours. It's a bit hard to judge since I intermittently think of problems when I'm on the bus, in bed, or school (Too bad now I don't understand what we're doing in Chemistry XD). Though I will say I don't typically spend that long sitting in front of my computer on one problem; sometimes I just get the feeling that today is not the day I solve some problem (usually because I don't get any new ideas after a while). Sometimes even after returning to the problem I will just try a different one after 30 minutes to 1 hr that I can't solve purely because I go through the same thought process again. Is it inefficent? Remarkably so, I'd say. But I'm having fun, so I don't care. I think that the practice method that allows you to do the same would be the best. Good luck!
meanwhile me edi spamming
I too have no idea whats going on in chemistry :skull:
I think C2 is 1600 rated because of C1.
You can refer to this comment to see similar claims
I can see that you ACed C1 after ACing C2.
You might be disadvantaged if you didn't do C1 before trying C2.
I rarely read editorials but instead often spend hours, sometime across a period of multiple days, to ponder about a hard problem and implement experimental code to verify ideas and its efficiency. During such iterations, more and more ideas are explored, covered, verified or dismissed. Intuitions sometime suddenly arise during showers, toilet time or bed time etc. I feel such exploration and iterations are fruitful and enjoyable, despite it cost times.
Another minor reason is editorial if often not presented in a "natural" thinking order but rather a final summary of a sophisticated solution, with lots of intermediate dots to be connected by the reader.
A downside of my approach is despite I solved the problem in the end, there is chance that it is inferior in some perspective but I missed learning other better approach as offered by the editorials. I hope once I am able to solve more and more problems faster, I would have the bandwidth to digest editorials afterward to learn potential new ideas.
If you enjoyed it, then it was not a waste of time.
Keep trying improves your ability to think. Also it's keeping your mind to not check the solution so easily. But on the other hand, I have felt that spending very huge time, like 4-5 hours, on a single problem is also not good for the following reasons :
It Stops you from solving more quality problem per unit time, from which you could've learnt comparatively more.
You might get bored of the problem or the related topic due to this, and could postpone it for later on, which in general could create a huge backlog.
It can lead to a subconscious feeling of demotivation / being low, which might further lead to more time waste, or you getting engaged in some other tasks then solving problem.
So, in my opinion you should better give only an honest hour, maybe 1.5 hour for thinking about the problem, otherwise you should go for the tutorial bit by bit. That would probably help you.
I personally left cp for a long time because I was not having much fun. Then I stopped looking at the editorial for days. I solved a 2200 rated problem in 4 days when my rating was 1150. It gave me a lot of happiness. Speaking for myself, I do cp for happiness and satisfaction and for me that comes from solving a tough problem myself and I dont care about anything else as long as I am enjoying.
about the 1600 problem you are talking about in this blog...i get it why you spent 5hours on this problem
https://codeforces.net/blog/entry/88677?#comment-771761
OK, so hear me out. Question 3 is very tricky because solving 5 problems on your own and 1 with the editorial seems to be much better than solving 2 on your own. It is better for each parameter. However, let's dive deeper into the one problem you read the editorial for. It should be one of those 2 that you would otherwise solve on your own(or it's the third one you had stuck on, but that's the corner case, so we can skip this). So in the second scenario, you've overcome yourself and solved the problem that was tough FOR YOU(and not the problem that is hard for codeforces users in general). Thought experiment: if I asked you to solve 10 2000-rated problems, would you be able to do it? I am sure you would if you were the one who is choosing the problems. But what if you choose 10 problems randomly? Does that seem harder? That's my point