What this site covers
Each module is a self-contained page you can read on its own. The study plan stitches them together into a week-by-week ramp through the four contest rounds.
About the contest
Format, divisions, promotion rules, scoring, allowed languages, and what each round actually looks like.
Algorithms by division
What Bronze, Silver, Gold, and Platinum each test — ad-hoc, BFS/DFS, DP, segment trees, flow, and more.
C++ toolkit
The STL you actually use in contests: vector, set, map, priority_queue, bitset, plus fast I/O and template snippets.
Past problems archive
Selected problems from recent seasons with the key idea, complexity target, and editorial pointer.
Mock contests
Original 3-problem sets in USACO style, one per division, with self-grading rubrics and time budgets.
Six-month plan
June through US Open: weekly topics, problems to solve, mock cadence, and promotion targets.
Resources & references
USACO Guide, CP-Algorithms, Codeforces, Atcoder, books, and editorials worth bookmarking.
Suggested reading order
- Get oriented. Read About the contest and look at one Bronze problem from the past problems page so you know what 4 hours of competitive programming feels like.
- Pick a language and lock it in. C++ is the default for almost all serious USACO climbers; the C++ toolkit page has the STL, template, and fast I/O you'll keep reusing.
- Study the division you're in. Each division on Techniques lists the handful of topics that actually decide problems. Bronze is search + ad-hoc; Silver is BFS/DFS + binary search + prefix sums.
- Solve, then read the editorial. Pick problems from past problems, give each one an honest 60-minute attempt, then read the official editorial. The gap between your idea and theirs is where the learning is.
- Sit a full mock once a month. Use one of the mock contests under contest conditions: closed tab, 4-hour timer, no help. Score with the rubric on the same page.
- Ride the season. Follow the six-month plan so you peak right around the December round and stay sharp through US Open.
How a USACO round actually works
Things strong USACO competitors do differently
- Read every problem before coding anything. The cheapest problem in a set isn't always Problem 1.
- Write small, simple, correct code. A clean O(n log n) that you finish beats a messy O(n) you spend an hour debugging.
- Test on the sample and a handcrafted edge case (n=1, all equal, max constraint) before submitting.
- If TLE, don't panic. Check your complexity on paper first; only then think about micro-optimization or a different algorithm.
- If WA, print the smallest failing input you can construct. Brute-force checker scripts catch off-by-ones the eye misses.
- Always submit something. Even a brute force gets you partial credit on small subtasks.