USACO 2019 US Open — the season finals, all four divisions.

The US Open is the last round of the 2018–19 USACO season and runs a full 5 hours per division — an hour longer than the December/January/February rounds. This page indexes the 2019 US Open 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 2019 US Open results page on usaco.org: usaco.org/index.php?page=open19results. Each problem links to its canonical statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 939–950).

Round metadata

ContestUSACO 2019 US Open (season finals)
WindowLate March / early April 2019, 4-day window with a single 5-hour personal timer
Length per division5 hours (US Open is the long round; Dec/Jan/Feb are 4 hours)
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.
SignificanceLast chance to promote into Platinum before US camp / IOI selection; Platinum scores here weigh into finalist invitations.

The contest at a glance

Bronze

Bronze · 3 problems

1. Bucket Brigade — shortest path on a fixed 10×10 grid from lake L to barn B avoiding rocks; BFS.

2. Milk Factory — given N−1 directed edges on an N-node tree-shape, find the smallest node reachable from all others; O(N²) reachability.

3. Cow Evolution — decide if N feature sets admit a "proper" evolutionary tree (each feature evolves once); check no two features pairwise-conflict.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Left Out — N×N grid of L/R, flip whole rows/columns to align all but one cow; find the lone cow (parity argument on row/col flips).

2. Cow Steeplechase II — find a segment whose removal makes all other segments non-intersecting; sweep line with a multiset.

3. Fence Planning — smallest axis-aligned bounding box perimeter of any connected component; DSU + per-component min/max.

Open Silver write-up →
Gold

Gold · 3 problems

1. Snakes — partition N groups in order into K+1 contiguous segments minimizing Σ(maxₛₑ𝓰 − group); O(N²K) interval DP.

2. I Would Walk 500 Miles — partition N cows into K groups to maximize the min inter-group "distance" with a hash formula; binary search + Kruskal.

3. Balancing Inversions — min adjacent swaps so left half and right half of a 0/1 array have equal inversions; two-pointer + BIT.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Tree Boxes — assign 2D coordinates to a tree so any path is covered by ≤2 axis-aligned boxes; interactive heavy-path embedding.

2. Compound Escape — count MSTs of an N×K grid graph with K≤6; matroid contraction DP, mod 109+7.

3. Valleys — sum of sizes of all non-holey "valley" regions in an N×N height grid; offline DSU + Euler-tour-on-complement to detect holes.

Open Platinum write-up →

How to use this set

  1. Pick your division. Open the full division page and read all three statements before writing any code — 5 hours rewards a calm reading sweep first.
  2. Order the attack. US Open P1 is usually the cheapest problem; P3 is almost always the hardest. Solve in order unless P2 obviously matches a pattern you already know.
  3. Time-box. 5 hours total. Don't sink more than ~2 hours into a single problem without at least the easiest subtask banked.
  4. Compare to the reference C++. Each problem on the division page has a 30–80 line reference. If yours is much longer, ask why.
  5. Verify with the editorial. Official editorials are linked from each problem page on usaco.org.