Preparation guide
How to prepare for USACO
Free, worldwide algorithmic contests on a four-division ladder, and the route to Team USA at the IOI.
Competitive · Pre-college students
Where the points actually are
USACO is the most learnable competition in this directory because the syllabus per division is small, explicit and unchanging, and every past problem is published with an official analysis. Bronze needs careful implementation and complete search. Silver needs a handful of named techniques. The gap between divisions is content you can name and study, not talent.
Topic breakdown
- 01Bronze
- Simulation, sorting, complete search and brute force, ad hoc implementation. No advanced algorithms. Most Bronze failures are implementation bugs, not missing knowledge.
- 02Silver
- Binary search, prefix sums, two pointers, depth-first search and flood fill, greedy algorithms, sorting with custom comparators.
- 03Gold
- Dynamic programming in several flavours, shortest paths, union-find, trees, and efficient data structures.
- 04Platinum
- Segment trees, advanced dynamic programming, heavy graph theory, computational geometry, and problem-specific invention.
- 05Implementation discipline
- Reading input formats exactly, avoiding integer overflow, and writing code you can debug in the last hour. This is worth more points at Bronze and Silver than any algorithm.
A study plan that works backwards from the date
- Start in the off-season, not in December The single most common mistake is starting a month before the first contest. Begin in summer or early autumn.
- Months 1 to 2 Work the official USACO training pages and the USACO Guide module for your division in order. Do not skip ahead; the modules are sequenced deliberately.
- Months 3 to 4 Past problems from your division only, from the free archive. After each one, read the official analysis in full even when you solved it. Aim for 60 to 100 solved problems before your first contest.
- Final month Simulate contests: four hours, three problems, no interruptions. The endurance is a separate skill from the algorithms.
- Between contests during the season Do not learn new material mid-season. Redo the problems from the contest you just sat, properly, until you can write each solution from scratch.
Tips that come from the format itself
- The archive of past problems with full official analyses is the single best free resource in competitive programming. Working through it takes months, not weeks.
- C++ is the practical default because of speed and the standard template library, but Java and Python are permitted and Bronze and Silver are comfortably solvable in Python.
- Read the rules before your first contest. Generative AI, shared code and pre-written templates are banned, and the penalty is a lifetime ban rather than a warning.
- A partial score is a real score. Solving one problem completely beats three attempted and none finished.
- Bronze is not a formality. Many strong school programmers fail to promote on their first attempt because they underestimate the implementation care required.
Practice resources
-
USACO official site and problem archive
Registration, rules, the season schedule, and years of past problems with official analyses and a live judge.
-
USACO Guide
A free, community-built curriculum organised by division, with ordered modules and practice problems. The standard starting point.
-
USACO training pages
The original official training programme. Older in style but still the recommended first pass through the fundamentals.
-
Codeforces
Frequent short contests. Useful for volume once you are past Bronze, though the problem style differs from USACO.
-
Competitive Programmer's Handbook by Antti Laaksonen
Free PDF covering the full Silver to Platinum algorithm syllabus clearly and concisely.
Past papers and official materials
- Complete USACO contest archive with official analyses
Every past contest, free, with solutions and the ability to submit code for judging.
- CSES Problem Set
Free 300-problem set covering the standard algorithm syllabus, widely used alongside USACO practice.
Videos worth your time
- William Lin, competitive programming
Screencasts of contest solving by a former IOI medallist. Watching someone think in real time is the fastest way to learn contest pacing.
- Errichto
Algorithm lectures and contest analysis pitched at Silver through Platinum.
Skills this builds
- C++, Java or Python
- Sorting and searching
- Graph algorithms
- Dynamic programming
- Complexity analysis
- Debugging under time pressure