Appearance
Contest Reality Ladder
What This Ladder Trains: Real contest conditions where you don't know the topic in advance. These 20 problems mix DP, graphs, data structures, strings, math, and greedy -- sorted purely by difficulty. The topic tag is hidden so you must identify the technique yourself. This is the bridge between structured practice and actual competition performance.
Use this as a capstone, not a fourth practice option. It is not a parallel ladder to the topic ladders — it's the test you take after them. Three good moments to come back here:
- After finishing a rating-band ladder, before declaring it "done."
- After plateauing in topic ladders, to confirm the gap is recognition rather than algorithm.
- As the warm-up for a virtual contest block, to re-engage the "I don't know what topic this is" reflex.
Quick Revisit
- SKILL FOCUS: technique identification -- mixed topics with hidden tags, simulating real contests
- DIFFICULTY: 1200--1900
- PROBLEMS: 20
- PREREQUISITE: topic-specific ladders (04--07) or the 1400-1700 ladder
- HEADLINE METRIC: technique identification accuracy before hint or editorial (track this; solves are secondary)
Contents
Warm-Up (1200-1400)
6 problems across mixed topics. Identify the technique before coding.
| # | Problem | Rating | Topic | Hint |
|---|---|---|---|---|
| 1 | Cut Ribbon | 1300 | TopicDP | HintCoin-change variant: dp[len] = max pieces using the three ribbon sizes. |
| 2 | Ice Skating | 1200 | TopicGraphs / DSU | HintPoints sharing x or y coordinate are connected. Answer = connected components - 1. |
| 3 | Delete Two Elements | 1200 | TopicData Structures / Map | HintCompute required pair sum from total. Count matching pairs with a frequency map. |
| 4 | Substring Removal | 1200 | TopicStrings / Combinatorics | HintCount valid results: prefix of one char + suffix of one char. Handle same-character overlap. |
| 5 | Little Girl and Maximum Sum | 1500 | TopicGreedy / Difference Array | HintDifference array for query frequency per position, then sort and pair largest values with most-queried positions. |
| 6 | Ball in Berland | 1400 | TopicCombinatorics / Sets | HintCount total pairs minus conflicting pairs. Two pairs conflict if they share a boy or a girl. |
Core (1400-1600)
8 problems. The difficulty jump is real -- budget 45 minutes each.
| # | Problem | Rating | Topic | Hint |
|---|---|---|---|---|
| 7 | Vacations | 1400 | TopicDP | Hintdp[i][last] with last in {rest, gym, contest}. Minimize rest days respecting availability and no-repeat constraint. |
| 8 | Kefa and Park | 1500 | TopicGraphs / DFS | HintDFS from root tracking consecutive cats. A leaf restaurant is reachable if cat-count never exceeds m. |
| 9 | Sleeping Schedule | 1500 | TopicDP | Hintdp[i][time mod h] = max good wake-ups. Two choices per day: sleep a[i] or a[i]-1 hours. |
| 10 | Fox and Two Dots | 1500 | TopicGraphs / DFS | HintFor each color, check if the subgraph has a cycle using DFS. A cycle exists if you find a visited non-parent neighbor. |
| 11 | Good Substrings | 1500 | TopicStrings / Trie | HintInsert substrings into a trie, counting bad characters. A node represents a good substring if bad <= k and it's a new node. |
| 12 | Two Arrays | 1600 | TopicDP / Combinatorics | HintNon-decreasing a[] and non-increasing b[] with a[m] <= b[1]. Equivalent to choosing 2m values with stars-and-bars. |
| 13 | Chocolate Bunny | 1600 | TopicInteractive / Math | HintQuery (i,j) and (j,i). The mod results reveal which position has the smaller value -- place it and continue. |
| 14 | Ayoub and Lost Array | 1500 | TopicDP | Hintdp[i][r] = ways to fill positions 1..i so running sum === r (mod 3). Transition: try each valid value in position i's range. |
Advanced (1600-1900)
6 problems. These require confident technique identification and clean implementation.
| # | Problem | Rating | Topic | Hint |
|---|---|---|---|---|
| 15 | Graph Without Long Directed Paths | 1700 | TopicGraphs / Bipartite | HintOrient edges so no path has length >= 2. Only possible if bipartite -- 2-color and orient each edge from one color to the other. |
| 16 | Consecutive Subsequence | 1700 | TopicDP | HintLIS variant where consecutive values differ by exactly 1. Use a map: dp[v] = length of longest ending at value v. |
| 17 | Kefa and Dishes | 1800 | TopicDP / Bitmask | HintBitmask DP: dp[mask][last] = max satisfaction eating the set of dishes in mask, ending with last. |
| 18 | Multiset | 1900 | TopicData Structures / BIT | HintBIT on values. Delete k-th smallest by binary searching the prefix sum. Process all deletions, output the survivor. |
| 19 | Password | 1700 | TopicStrings / Z-function | HintZ-function gives all prefix matches. Find the longest prefix that is both a suffix (z[i]+i = n) and appears as a middle substring. |
| 20 | Dijkstra? | 1900 | TopicGraphs / Shortest Path | HintStandard Dijkstra from node 1 to n with path reconstruction. Use long long and handle the n=1 / unreachable cases. |
How to Use This Ladder
- Don't peek at the topic tags. The whole point is to identify the technique yourself. Only reveal the tag after you've committed to an approach or given up.
- Simulate contest conditions. Set a timer. Work problems in order within each tier. No editorial access until after the timer.
- Time-box per tier:
- Warm-Up: 20 min per problem (2 hours total)
- Core: 30 min per problem (4 hours total)
- Advanced: 45 min per problem (4.5 hours total)
- After each session, review: "How quickly did I identify the technique? What signal told me?" Build your personal pattern-trigger list.
- Track your identification accuracy. If you consistently mis-identify DP problems as greedy (or vice versa), that's a specific skill to train -- revisit the Problem Pattern Recognition guide.
Scoring Guide
The primary metric is identification accuracy — for each problem, did you name the right technique before peeking at the topic tag or hint? Solve count is secondary; a problem where you correctly identified the technique but ran out of implementation time still counts as a recognition win.
| Identification accuracy | Meaning | Next Step |
|---|---|---|
| ≥ 80% (e.g. 16/20) | Recognition is contest-ready at this range | Verify with solves: if also ≥ 16/20 solved, climb to the 1700→2100 ladder |
| 60-79% | Recognition mostly works but has blind spots | Identify which topic categories you mis-tag and revisit the matching topic ladder (04-07) |
| 40-59% | Pattern triggers are not yet wired | Re-read Problem Pattern Recognition, then redo this ladder |
| < 40% | Topic ladders haven't yet generalized | Return to topic-specific ladders (04-07) and re-attempt after each |
After identification accuracy is solid, look at solve count as the secondary check — it tells you whether implementation under time pressure is keeping up with recognition.
Progression Check
- [ ] Warm-Up: solved >= 5/6, identified technique correctly for all
- [ ] Core: solved >= 6/8, identified technique correctly for >= 5
- [ ] Advanced: attempted all 6, solved >= 3
- [ ] Technique identification accuracy >= 80% (correct guess before coding)
- [ ] Average solve time is within the time-box for each tier