Competitive Programming — High School Intensive
The mastery stage of the Vietnamese competitive-programming path: problem recognition without labels, constraint budgeting, key observations, algorithm combinations, optimization and wrong-solution clinics, stress testing, subtask strategy, timed and mixed sets, mock contests, and editorial study with re-solve and variation transfer — all graded in the C++20 sandbox.
Who this course is for
Students who finished the HSG Advanced course (or equivalent) and are preparing for high-level provincial and national HSG Tin hoc rounds — the stage where knowing algorithms must turn into solving unfamiliar problems under a clock.
What you will be able to do
- Recognize the hidden algorithmic family of an unlabeled problem from constraints, query shape, and samples
- Convert constraint budgets into algorithm choices and reject infeasible complexities on sight
- Find and prove the key observation that unlocks brute-force bottlenecks, then optimize to fit the clock
- Diagnose wrong solutions by failure class — WA, TLE, overflow, precision — and build stress harnesses that catch them
- Bank partial credit with subtask strategy and manage a contest clock with the A-first policy
- Study editorials the strong way: stall, re-derive, re-implement clean, and transfer the insight to variations
Problem Recognition
Read a problem before knowing its topic: the three-pass reading method, the constraint-to-algorithm reflex, and the recognition signals that reveal which tool the setter had in mind.
Constraint Budget
Turning n, q, and value ranges into an operation budget — and picking the only family that fits it. Includes the n ≤ 20 law: when brute force is the answer, code it.
Find the Key Observation
The core loop of contest solving: brute force, find the bottleneck, inspect samples, discover the invariant, derive the optimization, implement and prove it.
Algorithm Combinations
Fusing two known tools into one solution: binary search + greedy, compression + Fenwick, DSU across time, Dijkstra over states, SCC + DAG DP — with the recognition each pairing earns.
Wrong Solution Clinic
A gallery of plausible-but-broken programs: overflow, greedy traps, DP off-by-one, boundary bugs, recursion depth, precision. Find the counterexample, fix the code, prove the fix.
Stress Testing
The differential harness: brute force as oracle, random generators with seeds, and a compare loop that finds what your eyes cannot. Executed inside the sandbox.
Subtask Mastery
Points are banked, not dreamed: read the subtasks first, secure brute-force points, then climb. Three full problems with real partial-scoring structure.
Speed Training
Contest sprints under a self-imposed clock: recognition in 15, implementation in 20, mediums in 30 — plus the mistake tax that turns fast code into accepted code.
Mixed Problem Sets
Three graded sets with the topics stripped off. You see constraints and samples; the algorithm is your call.
Mock Contests
Two original full contests in contest order — read everything, secure the A-problems, then spend your remaining clock on one C-problem.
Editorials, Re-solving, and Variations
The attempt-first workflow: stall honestly, read the observation (never the code first), re-implement clean, then kill the variation.
Final Challenge Pack
The hardest problems of the course plus the reference pack: selection guides, checklists, and the C++ contest template you should have memorized by now.