usaco.org/index.php?page=viewproblem2&cpid=…, cpids 711–722).
Round metadata
| Contest | USACO 2017 February |
|---|---|
| Window | 4-day window in February 2017, 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) |
| Theme | "Why did the cow cross the road?" — all 12 problems share the joke setup with three escalating variants per division. |
| Scoring | IOI-style partial credit, 1000 points per problem, 3000 max per division |
| Allowed languages | C, C++11, Java, Python 2.7, Python 3 (C++ 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. Why Did the Cow Cross the Road — count side-changes per cow across consecutive sightings; tiny simulation.
2. Why Did the Cow Cross the Road II — given a 52-char ABAB-style chord string, count pairs of cows whose chords cross on a circle.
3. Why Did the Cow Cross the Road III — single-server queue: cows arrive, are questioned one at a time, find finish time.
Silver · 3 problems
1. Why Did the Cow Cross the Road — max bipartite matching between chickens (time points) and cows (time intervals) via greedy on sorted endpoints.
2. Why Did the Cow Cross the Road II — minimum number of broken signals to repair to obtain K consecutive working signals (sliding window).
3. Why Did the Cow Cross the Road III — grid with road-edges and cows; count pairs of cows in different flood-fill components.
Gold · 3 problems
1. Why Did the Cow Cross the Road — Dijkstra on an N×N grid where every third visited field charges a grass-eating tax.
2. Why Did the Cow Cross the Road II — LCS-style DP with the "friendly" constraint |a−b| ≤ 4, for N ≤ 1000.
3. Why Did the Cow Cross the Road III — count crossing chords on a circle: pair up letters, count inversions of second occurrences with BIT.
Platinum · 3 problems
1. Why Did the Cow Cross the Road — minimize crossing pairs after one cyclic shift on either side; BIT + sweep over rotations.
2. Why Did the Cow Cross the Road II — N ≤ 105 version of friendly LCS; exploit the |a−b| ≤ 4 bandwidth with BIT on prefix maxima.
3. Why Did the Cow Cross the Road III — count pairs (a,b) with |a−b| > K that are inverted between the two orderings; offline + 2D 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. February 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.