A USACO Silver problem usually belongs to one of six shapes: the same range asked about many times, a best contiguous stretch, a threshold question, choose-the-most or cover-with-the-fewest, connectivity, or quantities too large to walk through. Each shape points at a standard technique, and each technique is only correct when one structural property holds. Recognition at Silver is therefore two steps — name the shape, then prove the property. Skip the second and a clean-looking solution quietly loses test groups.
Why recognition at Silver is a two-step job
At Bronze, naming the shape is most of the work: our breakdown of the five shapes of a Bronze problem argues that once you know you are holding a simulation or a sort-and-sweep, the code follows. Silver adds a layer. Our division guide describes it as the division of greedy reasoning, binary search, prefix sums and graph traversal, and every one of those tools arrives with a condition attached. A sliding window assumes something about the values. A binary search on the answer assumes something about feasibility. A greedy assumes that taking the locally best option never closes off a better one.
When the condition fails, the technique does not crash. It returns a plausible wrong answer, which is the worst failure in a format that shows you so little. Per the contest instructions on usaco.org, the first test case is typically the sample from the statement, you must pass it before the grader reports on the remaining cases, and those hidden inputs are never revealed during the contest. A misapplied technique often passes the sample, so your only warning is a row of red boxes with no failing input attached.
In our coaching team’s experience, Silver is also where students stay longest. Across six seasons of our de-identified cohort record, Silver accounted for 249 of 451 division outcomes (per Hanlin; counts of students reaching each division by season, not a funnel and not a USACO statistic), the widest band by a distance — the full breakdown is in our six-year progression review. The case this article makes is that a missing technique is often not what holds a student there. A technique used where its property does not hold is.
The six shapes, and the property each technique needs
The taxonomy below is our coaching team’s teaching framework, built from working through past Silver contests with students. It is not a USACO classification — USACO describes divisions rather than publishing a topic syllabus — and real problems often nest one shape inside another.
| Shape | What the statement tends to say | Technique | Property it needs | If the property fails |
|---|---|---|---|---|
| 1. Repeated range questions | “For each of Q queries”, “total between positions i and j”, “how many inside this rectangle” | Prefix sums in one or two dimensions; difference arrays when all updates come before the reads | The data does not change between questions | Updates mixed with questions need a structure that supports both, which our guide places in Gold |
| 2. Best contiguous stretch | “Longest consecutive…”, “shortest block such that…” | Two pointers or a sliding window | Monotone windows: shrinking a valid window keeps it valid, as with non-negative values and a total at most S | With negative values, use prefix sums plus a search over earlier prefix values |
| 3. Threshold question | “Minimum possible maximum”, “largest X such that it can still be done” | Binary search on the answer, with a fast feasibility check | If X works, every easier X works too | No boundary exists to search for; look for a direct construction or a different quantity to search over |
| 4. Choose the most, cover with the fewest | “Maximum number that can be scheduled”, “minimum number needed to cover” | Sort by a key, then take greedily | An exchange argument: swapping any choice in an optimal answer for the greedy choice never makes it worse | Test against brute force on tiny inputs; choices that interact point to dynamic programming, a Gold topic |
| 5. Connected, reachable, regions | “Can travel between”, “how many separate regions”, a grid with blocked cells | DFS, BFS or flood fill over an explicit or implicit graph | Every move costs the same, or only reachability matters | Moves with different costs need weighted shortest paths, a Gold topic |
| 6. Too big to walk through | Coordinates up to around a billion but far fewer points; “after K steps” with an enormous K | Coordinate compression and sorting events; detecting when a state repeats | Only a few positions or states are where anything changes | If the distinct states are themselves too many, look for a pattern or formula instead |

Three counterexamples small enough to carry into a contest
Every property in that table can be broken with a handful of numbers. Keep these three in your head; checking one against your idea is faster than any proof.
- A sliding window meets a negative value. Take the values 5, −4, 1 and ask for the longest contiguous stretch whose total is at most 2. The whole array sums to exactly 2, so the answer is 3. A standard window that grows on the right and shrinks on the left drops the 5 immediately, because a total of 5 is too large, and never gets it back — it finishes with 2. Shrinking stopped being safe the moment a later value could pull the total back down.
- A greedy without an exchange argument. Make 6 from coins worth 1, 3 and 4 using as few coins as possible. Largest-first takes 4, then 1, then 1: three coins. The true answer is 3 plus 3: two coins. The greedy never had a reason to be right; it only looked reasonable.
- A binary search on a question that is not monotone. With the values 2 and 2, ask whether some contiguous stretch sums to exactly X. X = 2 works, X = 3 does not, X = 4 works again. There is no single boundary for a binary search to find, because the word “exactly” destroyed the monotonicity that “at most” or “at least” would have kept.
The habit that turns this into points costs one line of paper before you type: write the property as a sentence about this specific problem, then spend a minute trying to break it with three numbers. If you cannot break it, write the code. If you can, you have saved an hour. And when a greedy survives your attempt but you still cannot say why it is right, compare it against a brute force on tiny random inputs before trusting it with a submission — the stress-testing routine exists for exactly this moment.
Pairs that are easy to confuse, and the question that separates them
| Easily confused | The separating question | Points to the first when | Points to the second when |
|---|---|---|---|
| Prefix sums vs two pointers | Are the ranges given to you, or must you find the best one? | The ranges are given in the input | You must find the stretch, and windows are monotone |
| Binary search on the answer vs greedy | Is the output a threshold value or a count of chosen items? | A threshold — often with a greedy check inside | A count you can build after sorting |
| Flood fill vs breadth-first layers | Do you need whether a cell is reached, or how soon? | Only whether, or how many regions | The number of steps matters |
| Sort-then-greedy vs dynamic programming | Can you state the exchange argument in one sentence? | Yes | No, and choices interact — a Gold-level signal |
| Direct array vs coordinate compression | Would an array indexed by value blow the memory limit? | No: index directly | Yes: compress to the values that actually appear |
The second row deserves a note, because it is not really an either-or. A very common Silver structure is a binary search on the answer whose feasibility check is a greedy pass over sorted data — for instance, “what is the smallest maximum load?” checked by filling each group greedily until it would exceed the candidate load. When a problem seems to fit two shapes at once, it often genuinely does. Identify the outer shape, then solve the inner one as its own small problem with its own property.
A ten-minute drill: classify, state the property, then break it
The Bronze recognition drill asks you to label a problem’s shape in thirty seconds. At Silver, add two columns, because the label on its own is the half that is least likely to go wrong.
- Shape. Open a past Silver problem and write the shape number from the table, plus the phrase in the statement that decided it.
- Property. Write the property the matching technique needs as a full sentence about this problem — for example, “all amounts are non-negative, so shrinking a valid window keeps it valid.”
- Break it. Write one change to the statement that would destroy that property, and name the technique you would switch to. Allow negative values; mix updates with questions; give moves different costs; ask for “exactly” instead of “at most”.
- Check the next day. Solve two of the problems properly and compare your shape and property with the approach that actually worked.
Do eight problems a session and keep two separate tallies: wrong shape, and right shape with the property never checked. They call for different fixes — more classification practice for the first, one deliberate sentence before coding for the second. Use complete past contests rather than topic-sorted lists, because a problem filed under “binary search” has already answered the question the drill is asking. Our past-contest page describes the pack our teachers have gathered and organised for this, with worked solutions for some of the years rather than every year.

Two limits are worth stating plainly. The shapes are a first-pass sorting tool, not a complete map, and a problem that fits none cleanly is telling you something about itself rather than about your classification. And the right-hand column of the first table is where Silver ends: moves with different costs, choices that interact and data that changes between questions are the signals that a problem has crossed into Gold territory, where our division guide places dynamic programming, shortest paths and efficient data structures. Promotion between divisions is decided per contest against a cutoff that USACO sets and that moves between contests, so confirm current figures on usaco.org rather than planning against a remembered number.
Frequently asked questions
Are the six Silver shapes an official USACO syllabus?
No. They are our coaching team’s teaching framework. USACO describes divisions rather than publishing a topic list, and problems often mix shapes.
How can I tell whether a greedy solution is correct?
State an exchange argument in one sentence, then compare the greedy with a brute force on tiny inputs. If both fail, treat it as unproven.
When does a sliding window give wrong answers?
When shrinking a valid window can make it invalid, usually because values can be negative. Use prefix sums with a search instead.
What if a Silver problem fits two shapes?
It often does. A common pairing is binary search on the answer with a greedy feasibility check; solve the inner shape first.
This is an independent guide operated by Hanlin Education for China-based international-school students. It is NOT affiliated with, endorsed by, or sponsored by USACO (the USA Computing Olympiad). Division descriptions, contest format, promotion cutoffs and registration are set by USACO and can change between seasons — always confirm current details on usaco.org, where registration and participation take place. Cohort figures are our own de-identified record, not a USACO statistic. If you spot an error in this article, we will correct it within 7 working days.