Six-month study plan
Calibrated for a Grade 9 student starting at Bronze, with a realistic target of clearing Silver by US Open and a stretch goal of Gold. Roughly 6 focused hours per week, with three "heavy" weekends spaced around the rounds.
How to adapt. If you're already comfortable at Silver, start at Month 3. If at Gold, jump to Month 5
and replace Bronze/Silver drills with Gold problem sets and a serious DP study.
Targets
| Round | Target division | Goal score |
|---|---|---|
| December | Bronze | Promote to Silver (≥ 750 / 3000) |
| January | Silver | ≥ 1 problem fully solved, partial on others |
| February | Silver | Promote to Gold |
| US Open | Silver or Gold | Top half of division |
Month 1 (June) · C++ fluency & Bronze ramp
- Week 1: Install a C++ toolchain (g++, VS Code), copy the template. Solve 5 trivial problems (read input, sum array, find max) to lock the workflow down.
- Week 2: STL drill. Solve 8 problems using
vector,sort,set,map. Goal: stop thinking about syntax. - Week 3: Complete search + simulation. 5 Bronze problems from 2020–2024 seasons.
- Week 4: Ad-hoc + greedy. 5 more Bronze problems. End of month: sit one full mock Bronze round under timed conditions (see mock).
Month 2 (July) · Silver foundations
- Week 1: BFS & DFS on grids. Flood fill problems.
- Week 2: BFS & DFS on graphs. Connected components, cycle detection.
- Week 3: Binary search on the answer. 5 classic problems.
- Week 4: Prefix sums (1D + 2D) and two pointers. Mid-July full mock at Silver level.
Month 3 (August) · Silver depth + early Gold concepts
- Week 1: Stacks, monotonic stacks, sliding window.
- Week 2: Greedy with sorting + custom comparators. Interval scheduling.
- Week 3: Intro to DP. 1-D DP. "Coins", "longest increasing subsequence" via O(n²) and O(n log n).
- Week 4: 2-D DP. Knapsack, grid DP. End-of-month full mock at Silver, score it honestly.
Month 4 (September) · Gold algorithms (round 1)
- Week 1: Dijkstra and variants. 5 shortest-path problems.
- Week 2: Union-Find. Kruskal's MST. Offline connectivity problems.
- Week 3: Topological sort. DAG DP. Tree DP intro.
- Week 4: Number theory pack: GCD, sieve, modular exp, nCk mod p. End-month mock at Silver+.
Month 5 (October) · Gold algorithms (round 2) + endurance
- Week 1: Segment tree / Fenwick. Point update, range query.
- Week 2: Tree DP, in/out subtree sums, rerooting trick.
- Week 3: Bitmask DP for n ≤ 20 problems. Hamiltonian path style.
- Week 4: Strings: hashing, KMP. Mid-month + end-month mocks (one Silver, one Gold).
Month 6 (November) · Contest mode
- Week 1: Review weakest topic from past mocks. Re-solve every wrong problem from earlier mocks without looking at your old code.
- Week 2: Two timed practice rounds (use any past USACO contest you haven't seen yet, 4 hours, real conditions).
- Week 3: Light week — speed drills, template review. Sleep well.
- Week 4 (early December): December round. Read all 3 problems first. Go for the cheapest one first, not necessarily Problem 1.
Practice cadence
The 5/2 rule. Aim for 5 new problems per week + 2 problems re-done from a prior week.
Re-doing problems is where the patterns get burned in.
Editorial discipline. Always give a problem a real 60 minutes before opening the editorial.
But don't grind past 90 minutes — read, understand, then re-implement from scratch with the editorial closed.
Mock cadence. One full timed mock per month for the first 3 months, two per month for the last 3.
Score yourself, identify your weakest topic, and the next week's drills target it.
Weekly checklist template
- ☐ 5 new problems solved (any judge, mostly USACO)
- ☐ 2 problems re-solved from prior weeks
- ☐ 1 page of notes added to your "patterns" log (what trick worked, what didn't)
- ☐ At least one problem solved without using
<bits/stdc++.h>-style autocomplete (typed from memory) - ☐ Time tracked honestly (use a stopwatch; the data is the feedback loop)