if you participated in national olympiads or IOI talk about your strategy
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
if you participated in national olympiads or IOI talk about your strategy
Name |
---|
Auto comment: topic has been updated by Gedawy (previous revision, new revision, compare).
I participated in Italian Olympiads in Informatics, and this was my (most likely suboptimal) strategy:
If I had to change something I would start doing subtasks sooner, in the last 2 hours of the competition instead of the last 1 hour.
The subtasks are not easy to get them all in the last hour, I don't think it is an optimal strategy
my strategy is to do so poorly that everyone else does worse than me so I come out on top
Read all the problems at the start. Take some time to understand what is required in a problem.
Pick the problem that seems the easiest.
Solve subtasks of that problem. I try to take multiple subtasks at once. It is pretty common that subtask is a subtask of another subtask. (For example, in the first subtask N<=10 and in second one N<=100, if I can come up with a solution for N<=100, that will solve N<=10 too).
Avoid ugly implementations. It is often that first or maybe even 2nd subtask have ugly implementation, that can be avoided by making an observation.
Subtasks are your friends, use them. If you are implementing a subtask worth a lot of points, or even the full solution, there is probably a lot of places for bugs. But, there is probably also a subtask that makes some part of your code much easier to implement. (For example, you need to implement a segment tree with lazy propagation. But there is a subtask that allows you to do operations in O(N) and doesn't require a segment tree, but just a for loop) Such subtasks are your best friends at OIs and I highly recommend implementing them. If they pass, it means that your idea is correct and that other parts of your code are also correct. Also, you will have some points and a code that you can use to debug your actual solution. For me, it is really common to first code my idea with simple for loops before implementing data structure/pointers. The last thing you want is to spend an hour on implementation only to realize that the idea itself is wrong. How to decide if a subtask is 4 or 5 comes with experience.
Now that you did all the subtasks you knew the solution to, look at other subtasks of this problem and subtasks of other problems. If there is one that you know the solution to immediately or think you can figure it out, go for it and repeat step 3.
If there is no such subtask, pick the one which seems easiest, or the problem that you spent least time on. There might be an observation that you are missing.
If you were unable to do 7 due to you solving all subtasks, then... Well, never thought about what to do in that case as I do not expect to ever be on this step.
Try to solve subtasks as much as I can. I know I can't solve full problems easily so I try to go for easier subtasks to build better solutions
Mine is to BFS in the 2-3 hours (solve first subtask of each problem then second one then third one etc).
For the last 2 hours (usually having 2 problems left and eliminated the others either because they are very hard or I scored 80+ in), I choose a single problem to brainstorm on depending on the subtasks I’ve got.
Nice