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

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the December 2023 round end-to-end: Bronze through Platinum, with the official statement, the key idea, complexity target, and a runnable C++ reference for each problem broken out 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 2023 results page on usaco.org: usaco.org/index.php?page=dec23results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…).

Round metadata

ContestUSACO 2023 December
WindowRoughly Dec 15–18, 2023 (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++17, Java, Python 3 (C++ is the default for almost all 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. Candy Cane Feast — N cows in line eat hanging candy canes; track each cow's growing height.

2. Cowntact Tracing 2 — min initial infected cows in a line that could produce the observed pattern after some nights.

3. Farmer John Actually Farms — N plants grow linearly; find earliest day a target ranking is realized.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Bovine Acrobatics — stack cows in ≤ M towers with weight-gap rule, maximize cows used (greedy + counts).

2. Cycle Correspondence — two cyclic labelings of K barns; max barns matching both (rotate / reflect, count fixed points).

3. Target Practice — robot vine executes L/R/F string; max targets hit if you can change at most one command.

Open Silver write-up →
Gold

Gold · 3 problems

1. Flight Routes — recover direct flights from pairwise parities of multi-hop route counts (GF(2) inversion).

2. Minimum Longest Trip — DAG longest path with lex-minimum label sequence per source (reverse-topo DP).

3. Haybale Distribution — pick delivery point minimising weighted asymmetric L1 cost per query (sorted prefix sums).

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Cowntact Tracing — on a tree, min initial infected to match observed state after k nights, for Q query values of k.

2. A Graph Problem — Prim-like edge concatenation hash from every starting vertex; reuse via Boruvka-style DSU.

3. Train Scheduling — schedule N trains on a one-track line A↔B, minimize total delay (convex DP / queue exchange).

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.