Gedawy's blog

By Gedawy, history, 18 months ago, In English

if you participated in national olympiads or IOI talk about your strategy

  • Vote: I like it
  • +8
  • Vote: I do not like it

»
18 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Gedawy (previous revision, new revision, compare).

»
18 months ago, # |
  Vote: I like it +1 Vote: I do not like it

I participated in Italian Olympiads in Informatics, and this was my (most likely suboptimal) strategy:

  1. Read all the problems first
  2. Think of the solutions for 100 points of the problems in the first 4 hours
  3. Give up in the last hour and try to get small points (do subtasks).

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.

  • »
    »
    18 months ago, # ^ |
      Vote: I like it +11 Vote: I do not like it

    The subtasks are not easy to get them all in the last hour, I don't think it is an optimal strategy

»
18 months ago, # |
  Vote: I like it +2 Vote: I do not like it
  1. Read all the problems.
  2. think about each problem for a while until i get stuck or find a solution, if i find one i code it and submit.
  3. look for solvable subtasks
  4. repeat 2 and 3 until the there aren't any left. 4.1. repeat again juuust in case
  5. start drinking juice or doodling or play the codeblocks tetris game (plugins -> BYO games) or whatever until i can leave
»
18 months ago, # |
  Vote: I like it +2 Vote: I do not like it

my strategy is to do so poorly that everyone else does worse than me so I come out on top

»
18 months ago, # |
  Vote: I like it +13 Vote: I do not like it
  1. Read all the problems at the start. Take some time to understand what is required in a problem.

  2. Pick the problem that seems the easiest.

  3. 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).

  4. Avoid ugly implementations. It is often that first or maybe even 2nd subtask have ugly implementation, that can be avoided by making an observation.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

»
18 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
18 months ago, # |
  Vote: I like it +1 Vote: I do not like it

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.