usaco.org/index.php?page=viewproblem2&cpid=…, cpids 1251–1262).
Round metadata
| Contest | USACO 2022 December |
|---|---|
| Window | Roughly Dec 16–19, 2022 (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. Cow College — pick one tuition price to maximize revenue across N cows with willingness caps (sort + sweep).
2. Feeding the Cows — minimum grass patches so every cow of each breed reaches food within K (greedy placement).
3. Reverse Engineering — decide whether an (input, output) table is consistent with any if/else program over binary variables.
Silver · 3 problems
1. Barn Tree — equalize hay across a tree using moves along edges; print one optimal move sequence (DFS, post-order).
2. Circular Barn — Sprague–Grundy game on rooms with "remove 1 or prime" moves, XORed around a ring.
3. Range Reconstruction — reconstruct an array from all pairwise max−min subarray ranges (N ≤ 300, O(N²)).
Gold · 3 problems
1. Bribing Friends — knapsack with two currencies (moonies + cones) and per-item exchange rates (2D DP, sort by ratio).
2. Mountains — maintain "visible pairs" under point updates of heights using line-of-sight (O(N²) per update, total O(N²Q) with pruning).
3. Strongest Friendship Group — max over connected subgraphs of (size × min-degree-in-subgraph); peel lowest-degree vertex repeatedly.
Platinum · 3 problems
1. Breakdown — shortest K-edge path in a complete weighted digraph under N² edge deletions; meet-in-the-middle on ⌈K/2⌉ halves, rebuild in reverse.
2. Making Friends — leaving cow makes all surviving friends pairwise friends; count new edges (priority queue + smallest-neighbour trick).
3. Palindromes — sum, over all O(N²) substrings of a binary string, of the min adjacent swaps to form a palindrome (or −1); two-pointer + BIT.
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. December 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.