The USACO contains several training pages on its website which are designed to develop one's skills in programming solutions to difficult and varied algorithmic problems at one's own pace. In addition to around 100 problems, there are texts on programming techniques such as greedy algorithms, dynamic programming, shortest path, and many others. Enthusiasts find the training pages so useful that people from other countries use them to prepare for their own national Olympiads; those from other countries in fact outnumber U.S. participants.
There are four Internet competitions held each year, each of which consists of three or four problems to be completed in a time span of three to five hours. These competitions are unproctored but are monitored strictly, and users caught attempting to cheat are banned for life. In addition to testing solutions based on correctness of answers, additional restrictions include run time and memory usage. Historically, scores were computed based on number of correct answers, with weighted values; harder problems and test cases were given more weight than easier ones. In recent years, the scoring model has shifted to an unweighted system, in which every problem and every test case is accorded equal value. Overall, these contests are designed to be very hard, and as such have a low average score compared to other programming competitions.
US Open
In addition to the three normal internet competitions, a fourth competition, the US Open, is held annually in early April. The competition is touted as 'the USACO's flagship tournament' and is a five-hour competition consisting of three questions. The US Open has been unproctored since 2009. Like the internet competitions, the US Open is divided based on divisions, from Bronze to Platinum, and is also held online. The US Open is much more difficult than the normal Internet competitions, but is scored in the same manner. Performance in the US Open is one of the key elements in determining the invitees to the USACO training camp, although a solid performance in the other internet competitions also plays a major role.
Training camp
The USACO training camp is a week-long program held to determine which four students will comprise the USA team at the InternationalOlympiad in Informatics. Around 24 people are invited to the camp, which is usually held in late May or early June. The training camp was held at the University of Wisconsin–Parkside for many years, then Colorado College from 2005-2007, and then moved to Clemson University in 2010. To qualify, one must be a secondary school student in the U.S. and have scored highly on the Internet contests and/or the US Open. At the camp, contests are held in the morning, followed by discussion of solutions. In the afternoon, the students engage in various recreational activities. There are also a few lectures on different areas of computer science and programming. At the conclusion of the camp, there is an ice cream party recognizing the participants, in particular those who are selected for the delegation to the IOI.