USACO 2021 January — the whole contest, all four divisions.

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the January 2021 round end-to-end: Bronze through Platinum, with the official statement link, the key idea, complexity target, and a runnable C++ reference for each problem on the per-division pages.

Bronze (all 3) → Silver (all 3) → Gold (all 3) → Platinum (all 3) →
Authoritative source. All problem titles, constraints, and results below are taken from the official January 2021 results page on usaco.org: usaco.org/index.php?page=jan21results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 1083–1094).

Round metadata

ContestUSACO 2021 January
WindowRoughly Jan 22–25, 2021 (4-day window, single 4-hour personal timer)
Length per division4 hours (Dec/Jan/Feb format; US Open is the 5-hour round)
Problems per division3
Total problems12 (Bronze 1–3, Silver 1–3, Gold 1–3, Platinum 1–3)
ScoringIOI-style partial credit, 1000 points per problem, 3000 max per division
Allowed languagesC, C++11, C++17, Java, Python 2.7, Python 3.6 (C++17 is the default for serious climbers)
Promotion cutoffsSet per-contest by USACO; check the results page for exact thresholds.

The contest at a glance

Bronze

Bronze · 3 problems

1. Uddered but not Herd — given a fixed cowphabet ordering and the heard string, count the minimum number of complete recitations needed (greedy index walk).

2. Even More Odd Photos — partition cows into groups whose breed-ID sums alternate even/odd, maximizing groups (count parities and simulate).

3. Just Stalling — count permutations of cows to stalls satisfying per-stall height limits (sort + multiplicative counting).

Open Bronze write-up →
Silver

Silver · 3 problems

1. Dance Mooves — apply K swaps cyclically for ∞ rounds; for each cow report how many distinct positions it ever visits (permutation cycles + position-set union).

2. No Time to Paint — minimum strokes to paint a fence color string where a stroke is a contiguous monochrome interval, answering Q "leave this range unpainted" queries (prefix counts of letter transitions).

3. Spaced Out — place cows in an N×N grid so every 2×2 contains exactly 2 cows, maximizing total beauty (two structural cases: row-striped vs column-striped).

Open Silver write-up →
Gold

Gold · 3 problems

1. Uddered but not Herd — Gold version: cowphabet is unknown, choose the ordering that minimizes the number of recitations (count "descents" in the heard string under the optimal order).

2. Telephone — N cows in a line, K breeds; transmit from cow 1 to cow N where breed compatibility matrix S decides allowed handoffs; minimize total distance (BFS over breeds × positions).

3. Dance Mooves — Gold version of P-Silver-1 with up to 1018 rounds: union positions inside each functional-graph cycle.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Sum of Distances — sum of shortest-path distances from vertex (1,…,1) to all reachable vertices in the tensor product of K graphs (parity BFS in each component, then combine).

2. Minimum Cost Paths — cheapest path on an N×M grid with quadratic row cost x² and column costs cy; answer Q offline queries (convex-hull / Li Chao trick).

3. Paint by Letters — for Q sub-rectangles count connected components of equal letters (Euler-formula vertices − edges + faces, per-rectangle sweep).

Open Platinum write-up →

How to use this set

  1. Pick your division. Open the full division page and read the three statements before writing any code.
  2. Solve P1 first, P2 if time, P3 only if you're cruising. January problem 1s are usually the cheapest points.
  3. Time-box. 4 hours total. Don't spend more than ~90 minutes on a single problem without a working subtask submission.
  4. Compare to the reference C++. Each problem on the division page has a ~30–50 line reference solution. If yours is much longer, ask why.
  5. Verify with the editorial. Official editorials are linked from each problem page on usaco.org.