usaco.org/index.php?page=viewproblem2&cpid=…, cpids 1083–1094).
Round metadata
| Contest | USACO 2021 January |
|---|---|
| Window | Roughly Jan 22–25, 2021 (4-day window, single 4-hour personal timer) |
| Length per division | 4 hours (Dec/Jan/Feb format; US Open is the 5-hour round) |
| Problems per division | 3 |
| Total problems | 12 (Bronze 1–3, Silver 1–3, Gold 1–3, Platinum 1–3) |
| Scoring | IOI-style partial credit, 1000 points per problem, 3000 max per division |
| Allowed languages | C, C++11, C++17, Java, Python 2.7, Python 3.6 (C++17 is the default for serious climbers) |
| Promotion cutoffs | Set per-contest by USACO; check the results page for exact thresholds. |
The contest at a glance
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).
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).
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.
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).
How to use this set
- Pick your division. Open the full division page and read the three statements before writing any code.
- Solve P1 first, P2 if time, P3 only if you're cruising. January problem 1s are usually the cheapest points.
- Time-box. 4 hours total. Don't spend more than ~90 minutes on a single problem without a working subtask submission.
- 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.
- Verify with the editorial. Official editorials are linked from each problem page on usaco.org.