usaco.org/index.php?page=viewproblem2&cpid=…, cpids 831–842).
Round metadata
| Contest | USACO 2018 US Open — final round of the 2017–2018 season, national championship |
|---|---|
| Window | 4-day window in spring 2018 (single 5-hour personal timer) |
| Length per division | 5 hours (US Open format; Dec/Jan/Feb rounds are 4 hours) |
| 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, Java, Python 2.7, Python 3.6 (C++17 became standard later) |
| Significance | Sets the four-person USA team for IOI 2018; promotion cutoffs published on the results page. |
| Notable | No perfect Platinum scores in the pre-college division — the "Train Tracking" interactive problem held everyone short. |
The contest at a glance
Bronze · 3 problems
1. Team Tic Tac Toe — count single-cow and two-cow team wins on a 3×3 board of letters.
2. Milking Order — earliest position for cow 1 given a hierarchy and fixed-position constraints.
3. Family Tree — classify the relationship of two cows in a mother-child family tree.
Silver · 3 problems
1. Out of Sorts — count bubble-sort outer passes; equals the max leftward distance any element travels.
2. Lemonade Line — sort cows by patience descending; greedy count of cows who actually join.
3. Multiplayer Moo — largest single-ID and two-ID connected region on a grid (flood fill + per-pair BFS).
Gold · 3 problems
1. Out of Sorts — cocktail-sort version; count passes via per-element bidirectional displacement.
2. Milking Order — maximize prefix of hierarchy constraints; binary search + topological sort.
3. Talent Show — fractional knapsack: maximize Σt / Σw subject to Σw ≥ W (binary search on ratio + DP).
Platinum · 3 problems
1. Out of Sorts — partition-then-recurse hybrid; total work = Σ over positions of (rounds it crosses a boundary).
2. Train Tracking — interactive sliding-window minimum with only 5,500 notebook slots between car arrivals.
3. Disruption — for each tree edge, find the cheapest extra edge that re-spans the two halves (small-to-large + std::set).
How to use this set
- Pick your division. Open the full division page and read all three statements before writing any code.
- Five hours, not four. US Open gives you the extra hour. Plan for a long P3 push.
- P1 first, P2 if time, P3 only if cruising. Open P1s are usually the cheapest points.
- Time-box. Don't spend more than ~90 minutes on a problem without a working subtask submission.
- Compare to the reference C++. Each problem on the division page has a ~30–50 line solution (Platinum slightly longer). If yours is much longer, ask why.
- Verify with the editorial. Official editorials are linked from each problem page on usaco.org.