This repository has been archived on 2022-06-22. You can view files and clone it, but cannot push or open issues or pull requests.
usaco-guide/content/2_General/4_Practicing.md

75 lines
3.6 KiB
Markdown
Raw Normal View History

2020-06-08 20:42:55 +00:00
---
slug: /general/practicing
2020-06-09 00:47:37 +00:00
title: How to Practice
author: Benjamin Qi, William Lin, Eric Wei, Nathan Wang, Nathan Chen
2020-06-09 01:10:26 +00:00
order: 4
2020-06-09 00:47:37 +00:00
---
How to practice, when to read editorials (analyses), etc.
<!-- END DESCRIPTION -->
## Practicing
## Reading Editorials
Knowing when to "give up" on a problem and start reading the problem's editorial
is challenging. Below are the opinions of various individuals.
Note that "give up" is in quotes, because one still learns when they "give up" and read an editorial!
### Benjamin Qi
If you're still coming up with new ideas, keep thinking. Otherwise, you have several options:
- Look at [part of] the solution. (If CodeForces, look at the tags.)
- Leave it for a while and do something else if you actually want to solve it on your own.
- Get a hint from someone else.
I'm impatient, so usually I go with the first option. Sometimes I end up reading an editorial before reading the statement, but idk if this is a good strategy. :/
In any case, if you thought about a problem a lot during a contest but didn't end up solving it, then I don't see any reason not to read the editorial when it comes out (vs. continuing to think about it on your own). Also, you should always implement the solution afterwards!
### William Lin
> I follow three guidelines (from most important to least important)
> 1. Having fun, just doing whatever you feel like doing
> 2. Spend about the same amount of time that you would be able to during a real contest
> 3. Whether you are making progress or not
Feel free to not listen to William Lin's suggestions as he is not very good himself.
### Eric Wei
> read problem editorials some time after thinking "i have no clue what i'm doing please send help" and before "if i stare at this problem for one minute longer i'm going to punch a hole in my computer", figure out the exact time yourself
### Nathan Wang
My personal opinion is that it is okay to give up early when solving CP problems.
Sometimes I spend as little as 15-20 minutes on a problem before reading the editorial
or at least glancing at solution code. Other times I may spend significantly longer.
CP editorials generally aren't the best (with the exception of USACO editorials,
which are pretty good) so I often spend a lot of time trying to understand the
solution even after "giving up" and reading the editorial. I think it's good
enough to implement the code without having the editorial open.
My justification for why I think it's okay to give up so early is as follows:
- Getting frustrated and quitting CP for a week is worse than giving up
- Whenever I feel like I'm really frustrated with a problem, I read the editorial
- CP editorials are usually difficult to understand, so you will still have
to spend a lot of time reading and understanding them
- You learn a _lot_ by reading editorials
- If you can solve a problem without reading the editorial, that means you
probably could have solved the problem in-contest too, so you didn't actually
learn that much. However, if you didn't know how to solve a problem and
you read the editorial so now you do, then you've learned a lot more.
- In other words, reading editorials is a _good_ thing, not a bad thing!
Overall, I would just say to "give up" when you feel like giving up, whether that's
in five hours or in 15 minutes :)
### Nathan Chen
Read the editorial when you feel like you've stopped making progress; that could be from 1 to 5 hours. However, the most important part about reading the editorial is that you understand the topic and try to think about what similar problems look like. Being generally curious is a good way to practice algorithmic thinking.