The British Informatics Olympiad (BIO) is the selection process for anyone under 18 living in Great Britain (note: Northern Ireland has a separate selection process) who wants to take part in the International Olympiad in Informatics (IOI).
The selection process consists of 2 rounds:
- Round 1 - Held at schools, see below for more information
- Round 2 - The top 15 out of the country from Round 1 are selected to take part in a weekend selection camp in Cambridge, around April time. The top 4 will then represent Great Britain at the IOI.
This is a short guide on how to prepare for the first round of the BIO (especially if you are new to the competition). For more information please consult the official website (see link below) which includes past Round One questions and answers.
- Answered independently
- 3 hours long
- Held within schools around December (exact date is school's choosing)
- 3 questions of increasing difficulty making a total of 100 marks
- ANY programming language can be used (provided your teacher can execute it)
Your internet and information access will be limited, however, programming documentation should be available if it is needed.
The paper will be given to you on paper or as a PDF file and will be broken down into 3 sections of increasing difficulty. Each section has a programming-based problem which will account for 25 marks and also some written problems related to the programming task
It shouldn't come as a surprise that you need to be fairly competent in a programming language in order to attempt the BIO problems. Around 75% of the marks are for answering the programming sections alone.
If you feel your programming knowledge is a bit lacking start off by looking at any of the free online tutorials:
Answering the Problems
Unlike ordinary programming tasks you may already be familiar with, such as projects during GCSE and A-level, Olympiad style problems usually require a lot more thinking about writing programs that meet all the criteria and are efficient at the same time.
These questions do require a fair amount of problems solving skill and mathematical knowledge but also practice is required if you want to get far in the competition.
The information below is specific to each question however they all require common knowledge and techniques. There are a multitude of resources available for this, you can find these on the other sections CommonLounge IOI community.
In terms of the round itself, try to solve as many problems as possible, you don't have to answer them in order and you can attempt any of the written problems without solving the programming part.
Another extremely important point is to TEST YOUR CODE thoroughly. This Round 1 is one of the few where you will not know how well your program works until the end. Therefore it is very important you generate test data and answers manually to make sure that no simple errors creep in, potentially losing a lot of marks.
Each question also includes a couple of written problems, worth about 25% of the total. These usually are one or two questions involving special cases of the problem statements which may require tweaking your program to answer. There is also often a question involving giving a proof about the problem. Again, practicing past problems helps a lot.
The first and easiest question usually has criteria or a certain wording that sometimes throws people off. It requires zero or very little knowledge beyond the syllabus at A-level, all that is needed is you should be able to indentify how to solve the problem given. The size of the input is also usually quite small so an efficient algorithm or any knowledge of such is not needed.
This question is an implementation exercise for which you need to know about more complex topics which you may not be so familiar with. For example, graph theory and problems involving manipulating a grid are often used for this question.
In terms of practice, some topics to keep in mind are:
- Storing graphs read from input in various formats
- Traversing graphs (depth first search and breadth first search)
- Simulation of a sequence of operations on a graph / grid
The final question is a question involving an algorithm where an efficient solution is needed. It is often the case that you can program a sub-optimal solution which gives the correct answer but is too slow to give the correct output for the larger test-cases which this question usually has.
To do well in this question, knowledge and experience with programming problems in the fields of recursion, dynamic programming and combinatorics will be useful.