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

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the December 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 December 2021 results page on usaco.org: usaco.org/index.php?page=dec21results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 1155–1166).

Round metadata

ContestUSACO 2021 December
WindowRoughly Dec 17–20, 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. Lonely Photo — count length-≥3 substrings of G/H with exactly one minority breed (sliding runs).

2. Air Cownditioning — adjust per-stall temperature deltas via interval ± operations; difference-array sweep.

3. Walking Home — grid paths from top-left to bottom-right with at most K direction changes (DP).

Open Bronze write-up →
Silver

Silver · 3 problems

1. Closest Cow Wins — Bessie picks K positions on a number line to maximize cows whose nearest patch is hers (greedy on gaps).

2. Connecting Two Barns — connect components containing nodes 1 and N at minimum cost c(a−b)² (two-pointer on sorted components).

3. Convoluted Intervals — for every s, count pairs (i,j) with ai+aj = s and bi+bj ≥ s (bucket convolution).

Open Silver write-up →
Gold

Gold · 3 problems

1. Paired Up — pair up cows with weights in [1,M] to maximize total weight of paired cows (DP on weights).

2. HILO — for a random permutation of guesses, count HI→LO + LO→HI transitions in expectation (combinatorial).

3. Bracelet Crossings — given pairwise crossing relations of N closed curves on a plane, decide a realization exists (recursive nesting check).

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Tickets — multi-source shortest path on a graph where each "ticket" connects an interval of nodes to a target; segment-tree to source.

2. Paired Up — Platinum version with intervals of weights and up to 1018 cows (segment tree + DP).

3. HILO — Platinum version: for each prefix of a permutation, output expected transitions; treaps / order statistics.

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. December 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.