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.
USACO 2024 December — full set
All 12 problems across Bronze/Silver/Gold/Platinum: statement, key idea, complexity target, reference C++.
USACO 2024 US Open — full set
All 12 problems from the 5-hour season finale; finalists from here get camp invitations.
USACO 2024 February — full set
All 12 problems from the February 2024 round, last regular before US Open.
USACO 2024 January — full set
All 12 problems across the 4 divisions from the January 2024 round.
USACO 2023 December — full set
All 12 problems across 4 divisions from the December 2023 round.
USACO 2023 US Open — full set
5-hour season finale: 12 problems including the recurring Pareidolia theme across Silver/Gold/Platinum.
USACO 2023 February — full set
All 12 problems including Hungry Cow (Bronze + Platinum), Cow-libi, Moo Route II, Watching Cowflix.
USACO 2023 January — full set
All 12 problems including Find & Replace (functional graph), Tractor Paths (binary lifting), Mana Collection (TSP).
USACO 2022 December — full set
12 problems across Bronze/Silver/Gold/Platinum from the December 2022 round.
USACO 2022 US Open — full set
5-hour season finale 2022: 12 problems across all four divisions.
USACO 2022 February — full set
12 problems across 4 divisions from the February 2022 round.
USACO 2022 January — full set
12 problems across 4 divisions from the January 2022 round.
USACO 2021 December — full set
12 problems across 4 divisions including Paired Up (Gold + Platinum) and HILO (Gold + Platinum).
USACO 2021 US Open — full set
5-hour finals 2021: 12 problems cpids 1131–1142 including the Acowdemia series and United Cows of FJ.
USACO 2021 February — full set
12 problems including Year of the Cow, Comfortable Cows, Stone Game, Counting Graphs.
USACO 2021 January — full set
12 problems cpids 1083–1094 including Uddered but not Herd and Dance Mooves (cross-division).
USACO 2020 December — full set
12 problems cpids 1059–1070 including Stuck in a Rut (cross-division), Cowntagion, Sleeping Cows.
USACO 2020 US Open — full set
5-hour finals: 12 problems COVID-themed (Social Distancing, Cowntact Tracing, Haircut, Favorite Colors, Sprinklers 2).
USACO 2020 February — full set
12 problems including Triangles, Swapity Swap, Clock Tree, Help Yourself, Delegation, Equilateral Triangles.
USACO 2020 January — full set
12 problems including Word Processor, Berry Picking, Time is Mooney, Falling Portals, Cave Paintings.
USACO 2019 December — full set
12 problems cpids 963–974: Cow Gymnastics, MooBuzz, Milk Visits (S+G), Greedy Pie Eaters, Bessie's Snow Cow, Tree Depth.
USACO 2019 US Open — full set
5-hour finals 2018-19: Bucket Brigade, Cow Evolution, Snakes, I Would Walk 500 Miles, Tree Boxes, Compound Escape, Valleys.
USACO 2019 February — full set
12 problems including Sleepy Cow Herding, Painting the Barn, Cow Land, Dishwashing, Cow Dating, Moorio Kart, Mowing Mischief.
USACO 2019 January — full set
12 problems including Shell Game, Sleepy Cow Sorting (all 4 divisions), Cow Poetry, Train Tracking 2, Redistricting.
USACO 2018 December — full set
12 problems including Mixing Milk, Convention, Fine Dining, Balance Beam, Sort It Out, Cow Gathering.
USACO 2018 US Open — full set
5-hour finals 2017-18: Team Tic Tac Toe, Out of Sorts (S+G+P), Lemonade Line, Talent Show, Train Tracking, Disruption.
USACO 2018 February — full set
12 problems (cpids 807–818): Teleportation, Hoofball, Rest Stops, Snow Boots (S+G), Directory Traversal, Slingshot, New Barns, Cow Gymnasts.
USACO 2018 January — full set
12 problems (cpids 783–794): Blocked Billboard II, Lifeguards (B/S/P), Rental Service, MooTube (S/G), Cow at Large (G/P), Stamp Painting, Sprinklers.
USACO 2017 December — full set
12 problems: Blocked Billboard, Bovine Shuffle, Milk Measurement, A Pie for a Pie, Barn Painting, Haybale Feast, Standing Out from the Herd, Push a Box, Greedy Gift Takers.
USACO 2017 US Open — full set
5-hour finals: Modern Art series, Bovine Genomics across all divisions, Switch Grass MST + reconstruction, COWBASIC matrix-exp interpreter.
USACO 2017 February — full set
12 problems cpids 711–722 — every problem titled "Why Did the Cow Cross the Road" I/II/III across the 4 divisions.
USACO 2017 January — full set
12 problems: Don't Be Last!, Hoof Paper Scissors (3 divisions), Cow Tipping, Cow Dance Show, Promotion Counting, Building a Tall Barn, Subsequence Reversal.
USACO 2016 December — full set
12 problems (cpids 663-674): Moocast (S+G), Cow Checklist, Lasers and Mirrors, Lots of Triangles, Robotic Cow Herd.
USACO 2016 US Open — full set
5-hour finals (cpids 639-650): Diamond Collector, Field Reduction, Closing the Farm, Splitting the Field, 248/262144, Landscaping.
USACO 2016 February — full set
12 problems: Milk Pails, Circular Barn, Load Balancing, Fenced In — each recurring across divisions.
USACO 2016 January — full set
12 problems (cpids 591-602): Angry Cows trilogy (B+S+G), Mowing the Field (B+P), Lights Out (G+P).
USACO 2015 December — full set
First-ever Platinum contest (cpids 567-578): Fence Painting, Speeding Ticket, Contaminated Milk, Switching on the Lights, High Card Wins, Breed Counting, Bessie's Dream, Max Flow, Counting Haybales.
USACO 2015 US Open — 3 divisions
Pre-Platinum 5h finals: Moocryption, Bessie Goes Moo (mod-7 residue counting), Trapped in the Haybales (B/S/G escalation), Palindromic Paths, Googol (interactive + bignum).
USACO 2015 February — 3 divisions
Pre-Platinum era. Censoring trio (stack → KMP → Aho–Corasick), Cow Hopscotch trio (15×15 → 100×100 → 750×750), Superbull (XOR MST), Fencing the Herd (CDQ online convex hull).
USACO 2015 January — 3 divisions
Pre-Platinum era. 10 problems: Cow Routing trilogy (B+S+G), Stampede sweep, Moovie Mooving bitmask DP, Grass Cownoisseur SCC.
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.