A programming contest is a special kind of challenge -- one in which the most important fact is the knowledge with which you come to the contest and the intuition you will have during it. What really counts is not your level of physical fitness, but the state of your mind. To prepare for something like this requires a different approach. You will found out exactly what it takes if you read further.
This is the second part of the four-part series article I began here on Dev Articles. The first one also appeared here, and tried to elucidate the mystery of why we should bother even to participate in something like this. If you failed to catch it when it originally appeared, you are free to search for it in my profile or by its title: Programming Contests: Why Bother?
As I told you at the end of the previous article, today we are going to focus on how you should prepare and act when participating in a programming contest: before, during and after it. For a start, let us speak about what to do before.
We can divide the "training camp" that you should go through before the contest in the following parts: theory, mentality, global, simulation, experience sharing and at the place. These sections will make sure that you've put in 90 percent of the effort and investment that is required to be successful at this. The remaining 10 percent is composed of your intuitiveness and (why not recognize it?) pure luck.
Remember that as important as it is to prepare for a contest, it is just as important to not overload your brain. It is advisable to totally relax for about a week before a greater challenge; just enjoy life and recharge your batteries.
You'll need to understand high level theories for the contest; that's the theory element I mentioned above. Most of the time, if you rely only on what your teachers teach you in high school or even at the college/university level, you will easily find yourself facing issues that you cannot solve. This will be mainly because you don't know a special technique, which seemed extreme and useless within the material for an average student...and therefore, it was not included.
In order to be entirely ready for a contest, you need to read a couple of books that endeavor to cover the algorithms of a field in detail. These are written most of the time by ex-Olympians, people who themselves faced these issues and are explaining and elaborating their own experience.
There are dozens of these kinds of books; nevertheless, there are a couple of them that have earned the title of classics. One that has earned the title of "The Bible of Algorithms" for its value is the appropriately titled Introduction to Algorithms by the trio of Cormen, Leiserson, and Rivest.
Of course there are more books, which may be worth your attention; however, these are the most popular of them. Then again, the Internet can serve as the most elaborate way to obtain information; sites like the USACO Training Gate and the ACM's site also have a large database with problems and their solutions. Now let us move forward by focusing on the mentality required.